C#如何反序列化嵌套的Json数据

时间:2016-12-08 08:15:32

标签: c# jsonserializer

我有一个Json数据,其中包含ID和Content两个字段。内容将存储另一个Json数据。我想只对第一个(外侧)Json进行反序列化。有可能吗?

{"Json1":
[
{"ID":"123",
"Content":"{"Json2":[{"test1":"234","test2":"456"}]}"}
]}

public class testing
{
    public List<testing2> Json1 { get; set; }
}
public class testing2
{
    public string ID { get; set; }
    public string Content { get; set; }
}

var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
testing test= serializer.Deserialize<testing>(JsonData);

我希望反序列化后test.Json1 [0] .Content的值等于{“Json2”:[{“test1”:“234”,“test2”:“456”}]}。但是,例外情况是“传入无效对象,':'或'}'。”系统会提示您输入上述代码。

1 个答案:

答案 0 :(得分:2)

如上所述,你的json无效。使用\转义引号,

var jsonData=@"{
    ""Json1"": [{
    ""ID"": ""123"",
    ""Content"": ""{\""Json2\"":[{\""test1\"": \""234\"",\""test2\"":\""456\""}]}""
    }]
    }";

以下是使用NewtwonJson进行反序列化的示例

var instance = JsonConvert.DeserializeObject<testing>( jsonData);