2016-12-01 265 views
1

我正在研究Unity(C#)項目,並嘗試將JSON數據從API轉換爲字典列表。我試圖使用Unity的JSONSerialization,但我不知道該怎麼做。將JSON轉換爲字典列表

在文檔中,它說以下內容,我想知道是否有人可以指導我如何轉換JSON?對不起,因爲我是C#的新手,還有其他語言,比如Javascript/Python,這很容易完成。

當前不支持將其他類型直接傳遞給API,例如原始類型 或數組。現在您需要將 這樣的類型包裝在某種類的類或結構中。

https://docs.unity3d.com/Manual/JSONSerialization.html

的JSON返回是如下和是字典的列表,以及每個字典具有兩個鍵(_id和firstName)。

[{"_id":"xxx", "firstName":"Brayann"}, {"_id":"yyy", "firstName":"Peter"}] 

回答

0

據我知道你不能反序列化作爲字典的enumarable但可以用於此目的更爲合理創建一個類:

public class SomeDataType 
{ 
    public string _id { get; set; } 
    public string firstName { get; set; } 
} 

然後你就可以反序列化作爲List<SomeDataType>

即使您確實需要字典,您也可以將ToDictionary方法添加到您的課程中。

3

創建對象,您將在其中創建json的對象Deserialize。之後致電ToDictionary

完整的示例:dotNetFiddle

public static void Main(string[] args) 
{ 
    string json = @"[{ ""_id"":""xxx"", ""firstName"":""Brayann""}, { ""_id"":""yyy"", ""firstName"":""Peter""}]"; 

    var result = JsonConvert.DeserializeObject<List<RootListObject>>(json) 
          .ToDictionary(x=> x.id, y=> y.firstName); 
} 

public class RootListObject 
{ 
    [JsonProperty(PropertyName ="_id")] 
    public string id { get; set; } 
    public string firstName { get; set; } 
}