嵌套json c#对象反序列化

嵌套json c#对象反序列化,c#,json.net,C#,Json.net,我有以下json字符串(jsonString) 以及以下C#对象 类项目 { 公共字符串名称{get;set;} 公共列表引用{get;set;} 公共列表艺术{get;set;} 公共项目() { } } 类流 { 公共字符串类型{get;set;} 公共字符串大小{get;set;} 公共字符串Id{get;set;} 公共流() { } } 和下面的代码 Item item = JsonConvert.DeserializeObject<Item>(jsonS

我有以下json字符串(jsonString)

以及以下C#对象

类项目
{
公共字符串名称{get;set;}
公共列表引用{get;set;}
公共列表艺术{get;set;}
公共项目()
{
}
}
类流
{
公共字符串类型{get;set;}
公共字符串大小{get;set;}
公共字符串Id{get;set;}
公共流()
{
}
}
和下面的代码

        Item item = JsonConvert.DeserializeObject<Item>(jsonString);
Item Item=JsonConvert.DeserializeObject(jsonString);
当我运行代码时,它会创建正确数量的引用和艺术,但是每个流都有空值(type=null,size=null)


是否可以执行此json.net反序列化对象方法,还是应该手动反序列化?

编辑:好的,忽略前面的答案。问题是数组(引用和艺术)包含对象,而对象又包含相关数据。基本上你有一层包装太多了。例如,此JSON工作正常:

[
{
"name":"Fruits",
"references":[
    {"Type":"reference","Size":"original","Id":"1"},
    ],
"arts":[
    {"Type":"art","Size":"original","id":"4"},
    {"type":"art","size":"medium","id":"9"},
    ]
}
]
如果无法更改JSON,则可能需要在对象模型中引入新的包装器类型:

public class StreamWrapper
{
    public Stream Stream { get; set; }
}

然后让您的
类具有
列表
变量,而不是
列表
。这有用吗?

Jon Skeet,谢谢你的回复。我得到的结果和你一样。问题是对我来说。。。流对象属性为null或0。这是项。引用[0]。类型==null,依此类推。。。你不是这样吗?@Iboregard:啊,对不起-我以为你的
列表
值是空的。调查。。。
[
{
"name":"Fruits",
"references":[
    {"Type":"reference","Size":"original","Id":"1"},
    ],
"arts":[
    {"Type":"art","Size":"original","id":"4"},
    {"type":"art","size":"medium","id":"9"},
    ]
}
]
public class StreamWrapper
{
    public Stream Stream { get; set; }
}