Json到C#反序列化对象中嵌套的对象
我的Json是这样的:Json到C#反序列化对象中嵌套的对象,c#,json.net,C#,Json.net,我的Json是这样的: { "data": { "50014992": { "value1": "fr", "value2": 1378928660, "value3": 500149927 }, "500149928": { "value1": "fr", "value2": 1378928660, "value3": 500149927
{
"data": {
"50014992": {
"value1": "fr",
"value2": 1378928660,
"value3": 500149927
},
"500149928": {
"value1": "fr",
"value2": 1378928660,
"value3": 500149927
},
"50014999": {
"value1": "fr",
"value2": 1378928660,
"value3": 500149927
},
"50014991": {
"value1": "fr",
"value2": 1378928660,
"value3": 500149927
}
}
}
public class Test
{
public Data data { get; set; }
public class Data
{
public Dictionary<int, Values> values { get; set; }
}
public class Values
{
public string value1 { get; set; }
public int value2 { get; set; }
public int value3 { get; set; }
}
}
public class Test
{
public Dictionary<string, Values> data { get; set; }
}
public class Values
{
public string value1 { get; set; }
public int value2 { get; set; }
public int value3 { get; set; }
}
我尝试通过Newtonsoft Json对其进行反序列化,如下所示:
{
"data": {
"50014992": {
"value1": "fr",
"value2": 1378928660,
"value3": 500149927
},
"500149928": {
"value1": "fr",
"value2": 1378928660,
"value3": 500149927
},
"50014999": {
"value1": "fr",
"value2": 1378928660,
"value3": 500149927
},
"50014991": {
"value1": "fr",
"value2": 1378928660,
"value3": 500149927
}
}
}
public class Test
{
public Data data { get; set; }
public class Data
{
public Dictionary<int, Values> values { get; set; }
}
public class Values
{
public string value1 { get; set; }
public int value2 { get; set; }
public int value3 { get; set; }
}
}
public class Test
{
public Dictionary<string, Values> data { get; set; }
}
public class Values
{
public string value1 { get; set; }
public int value2 { get; set; }
public int value3 { get; set; }
}
公共类测试
{
公共数据数据{get;set;}
公共类数据
{
公共字典值{get;set;}
}
公共阶级价值观
{
公共字符串值1{get;set;}
公共int值2{get;set;}
公共int值3{get;set;}
}
}
反序列化不会引发错误,但值总是NULL
如何使用嵌套在另一个对象中的不同键反序列化多个对象?我不确定,因为我现在无法测试。但是您应该将
数据
类型从自定义类更改为字典
确切地说是string
而不是int
,因为在您的Json中,这些数字放在括号中,正如我所记得的,Json库不会为您解析它们
最后的类结构应该是这样的:
{
"data": {
"50014992": {
"value1": "fr",
"value2": 1378928660,
"value3": 500149927
},
"500149928": {
"value1": "fr",
"value2": 1378928660,
"value3": 500149927
},
"50014999": {
"value1": "fr",
"value2": 1378928660,
"value3": 500149927
},
"50014991": {
"value1": "fr",
"value2": 1378928660,
"value3": 500149927
}
}
}
public class Test
{
public Data data { get; set; }
public class Data
{
public Dictionary<int, Values> values { get; set; }
}
public class Values
{
public string value1 { get; set; }
public int value2 { get; set; }
public int value3 { get; set; }
}
}
public class Test
{
public Dictionary<string, Values> data { get; set; }
}
public class Values
{
public string value1 { get; set; }
public int value2 { get; set; }
public int value3 { get; set; }
}
公共类测试
{
公共字典数据{get;set;}
}
公共阶级价值观
{
公共字符串值1{get;set;}
公共int值2{get;set;}
公共int值3{get;set;}
}
您的值类具有val1
,val2
,val3
属性。它们在Json数据中的什么位置?没有。您的Json数据没有val1、val2或val3属性。你希望Json.Net做什么;读懂你的心思?;-)@elgonzo Sry那只是个打字错误。现在修好了!此外,根据Json,“数据”是作为字典的属性。但在您的类模型中,情况并非如此。在类模型中,“数据”是一个具有“值”属性(即字典)的对象。与Json数据结构不匹配(正如Mark在下面指出的,Json字典中的键是字符串,而不是整数),首先字典应该是字典
。。。。值中的字段应该与json中的字段具有完全相同的名称,json中的数据不是类,而是字典itself@MarkBenovsky我修改了字典,名字也被编辑了,因为它只是一个打字错误!但它仍然不起作用。