2017-05-03 109 views
0

我試圖以前所未見的方式反序列化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

回答

-5

您的變量數據對象(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#中不是一個有效的名字 –