簡體   English   中英

如何將 json object 反序列化為 json 字符串?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM