我正在开发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"}]
答案 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
方法。