gpt4 book ai didi

c# - 如何序列化原始 json 字段?

转载 作者:可可西里 更新时间:2023-11-01 09:07:25 27 4
gpt4 key购买 nike

我在数据库中有一个存储 json 字符串的字段我希望当我在 json 结果中返回它时,它将作为 json 原始数据返回,而不是用引号作为字符串扭曲。

更新 1(更多信息):如果您查看图像字段,它包含一个原始的 json 字符串值
但是在用 JsonResult 序列化它之后,它会被引号扭曲,因为它是一种字符串,我如何告诉序列化程序将图像字段视为原始 json 数据?

        var db = new ModelsContainer();
var res = db.Images.OrderByDescending(i=>i.DateCreated).Skip(skip).Take(take).Select( i => new {
id = i.Id,
dateCreated = i.DateCreated,
images = i.Images ,
user = new {
id = i.User.Id,
facebookId = i.User.FacebookId,
displayName = i.User.DisplayName
},
tags = i.Tags.Select( t => t.Value )
}).ToList();

return Json(res, JsonRequestBehavior.AllowGet);

[
{
"id":"5c528e88-f3a7-4b30-9746-980867325fd1",
"dateCreated":"\/Date(1364381593000)\/",
"images":"[{\"source\":\"http://localhost:9242/images/f4956702/6d34/42db/b28a/397d0eaf3097.jpg\",\"width\":237,\"height\":237},{\"source\":\"http://localhost:9242/images/87d47041/1522/4d10/9325/105851aae259.jpg\",\"width\":633,\"height\":633},{\"source\":\"http://localhost:9242/images/2a639272/9067/42fb/83ee/e88f0a0878f8.jpg\",\"width\":547,\"height\":547},{\"source\":\"http://localhost:9242/images/37caa7b2/e183/4efc/96eb/487e556501b2.jpg\",\"width\":1024,\"height\":1024}]",
"user":{"id":"ea39616d-6ff9-424b-b99b-7bee53e674bb","facebookId":"608215901","displayName":"Yonathan Garti"},
"tags":["test","test","test"]
},
...
]

最佳答案

使用 Json.net,您可以定义自己的 JsonConverter 以应用特定的序列化行为。您可以将其应用于特定类型,或者如果您有 View 模型,则可以应用于特定属性。

在您的情况下,您希望使用 JsonWriter.WriteRawValue 将图像字符串写入原始字符串。

即。

public class PlainJsonStringConverter : Newtonsoft.Json.JsonConverter
{
public override bool CanConvert(Type objectType)
{
return objectType == typeof(string);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
return reader.Value;
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
writer.WriteRawValue((string)value);
}
}

public class MyViewModel
{
public string id { get; set; }
[Newtonsoft.Json.JsonConverter(typeof(PlainJsonStringConverter))]
public string images { get; set; }
/* ... */
}

关于c# - 如何序列化原始 json 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15661529/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com