将JSON转换为字典列表

时间:2016-12-01 07:15:23

标签: c# unity3d unity5

我正在开发Unity(C#)项目并尝试将API中的JSON数据转换为字典列表。我试图使用Unity的JSONSerialization,但我不确定该怎么做。

在文档中,它说如下,我想知道是否有人可以指导我如何转换JSON?很抱歉这个简单的问题因为我是C#的新手以及我使用的其他语言,如Javascript / Python,这很容易做到。

  

将其他类型直接传递给API,例如基本类型   或阵列,目前不受支持。现在你需要换行   某种类或结构中的类型。

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

返回的JSON如下所示,是一个字典列表,每个字典都有两个键(_id和firstName)。

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

2 个答案:

答案 0 :(得分:3)

创建您将Deserialize json的对象。之后请致电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; }
}

答案 1 :(得分:0)

据我所知,你可以反序列化为字典的可攻击性,但你可以为此目的创建一个更合理的类:

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

然后您可以反序列化为List<SomeDataType>

即使您确实需要字典,也可以在课程中添加ToDictionary方法。