[英]How can I deserialize a json object into a json string?
我有以下 json:
{
"name" : "tim",
"items" : {
"car" : "Mercedes",
"house" : "2 Bedroom"
}
}
反序列化成的 object 是:
public class Person
{
public string Name {get;set;}
public string Items {get;set;}
}
我想将items
反序列化为 json object 的字符串。 所以这个例子中的Items
应该是
"{\"car\" : \"Mercedes\",\"house\" : \"2 Bedroom\"}"
我不关心诸如制表符或新行之类的间距。 如何使用Newtonsoft.Json
做到这一点? 我试过制作一个JsonConverter<string>
,如此处所示,但reader.Value
出现为null
。
编辑:我想避免反序列化items
,然后再次将其序列化为字符串,因为我不知道items
将是什么形状并且它也可能很大。
在此处获得其他答案的帮助并进一步查看文档后,我发现了JObject.Load
方法。 我的转换器现在可以工作了,看起来像这样:
public class StringConverter : JsonConverter<String>
{
public override void WriteJson(JsonWriter writer, String value, JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override Version ReadJson(JsonReader reader, Type objectType, Version existingValue, bool hasExistingValue, JsonSerializer serializer)
{
return JObject.Load(reader).ToString();
}
}
我现在可以像这样使用属性:
public class Person
{
public string Name {get;set;}
[JsonConverter(typeof(StringConverter))]
public string Items {get;set;}
}
它很简单:
var person = JsonConvert.DeserializeObject<Person>(json);
string itemsJson = JsonConvert.SerializeObject(person.Items);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.