使用json.net解析JSON,将数组序列化为属性

使用json.net解析JSON,将数组序列化为属性

问题描述:

我试图以前所未见的方式反序列化json数据。 我正在使用json.net和C#。使用json.net解析JSON,将数组序列化为属性

对应JSON类应该是这样的:

class Example 
{ 
    public Person[] data { get; set; } 
} 

class Person 
{ 
    public string Id { get; set; } 
    public string Nationality { get; set; } 
    public string Name { get; set; } 
} 

这是JSON的样子:

{ 
    data: { 
     "123": ["SWE", "Steve"], 
     "221": ["USA", "Bob"], 
     "245": ["CAN", "Susan"] 
    } 
} 

是否可以使用属性还是我必须这样做我自己呢?

+3

这不是有效的JSON。首先[确认您有有效的JSON](https://jsonlint.com/)。 – mason

+0

为了澄清,我不控制JSON数据,它是这样。我的问题是,它是可以解析的吗? – Rios

+0

澄清,那不是JSON。你应该联系谁提供这些数据,并告诉他们他们没有生成有效的JSON。 – mason

您的变量数据对象(123,221,245)的类型为List<string>()

使用JSON.NET,您的模式需要匹配您的数据;类型和名称。

编辑:看着你的Person对象,你的POCO类似乎不正确。你会需要这样的结构:

public Data data { get; set; } 

,其中数据是...

public class Data 
{ 
    public List<string> 123 { get; set; } 
    ... 
} 
+3

不,这是无效的。这不是一个字符串列表。但是JSON不是有效的JSON,所以这是无关紧要的。 – mason

+2

无论如何'123'在C#中不是一个有效的名字 –