在json base64值中添加类型和字符集

问题描述 投票:0回答:1

我需要更改 json 主体响应:

{
    "id": "1581fbd2-c045-4162-9f4c-ddbca6a88d61",
    "content": "//content in base64"
    "title": "ProfileImage",
    "type": "image/jpeg",
    "created": "2023-08-03T18:55:46.736405+03:00"
}

“内容”字段如下:

 "content": "Data: image/jpeg; Charset: utf-8;//content in base64"

有没有办法在映射配置中做到这一点?

尝试直接在控制器中添加值

 var result = await _mediaService.GetById(id);

            if (result == null)
            {
                return NotFound();
            }

            string base64Data = Convert.ToBase64String(result.Content);
            string metaInfo = string.Format("Data: {0}; Charset: {1}", result.Type, Encoding.UTF8.WebName);
            string base64String = metaInfo + Convert.ToBase64String(result.Content);

            var mapResult = _mapper.Map<MediaModelResponse>(result);

            var response = new
            {
                mapResult.Id,
                Content = base64String,
                mapResult.Title,
                mapResult.Created
            };

            return Ok(response);

它有效,但我想找到更好的解决方案

还尝试在我的模型中添加一个新字段“ContentTest”并直接写入结果

mapResult.ContentTest = base64String;
c# asp.net .net asp.net-core automapper
1个回答
1
投票

您可以将 Base64 转换逻辑移至您的

Automapper
配置

cfg.CreateMap<MediaDto, MediaModelResponse>()
    .ForMember(i => i.Content, cfg => cfg.MapFrom((src, dest) =>
    {
        string metaInfo = string.Format("Data: {0}; Charset: {1}", src.Type, Encoding.UTF8.WebName);
        string base64String = metaInfo + Convert.ToBase64String(src.Content);

        return base64String;
    }));
© www.soinside.com 2019 - 2024. All rights reserved.