Json到C#反序列化对象中嵌套的对象

Json到C#反序列化对象中嵌套的对象,c#,json.net,C#,Json.net,我的Json是这样的: { "data": { "50014992": { "value1": "fr", "value2": 1378928660, "value3": 500149927 }, "500149928": { "value1": "fr", "value2": 1378928660, "value3": 500149927

我的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; }
}
我尝试通过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我修改了字典,名字也被编辑了,因为它只是一个打字错误!但它仍然不起作用。