2016-12-01 130 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; } 
}