我正在开发一个利用Firebase的手机游戏项目。我已经设法获得登录/注册,并且发送项目到数据库可以正常工作。但是,经过无数小时将我的头撞在墙上的事情之后,我还是无法正常工作。我可以从数据库中获取正确的JSON数据,它以以下格式显示:
{"5449000085757":{"itemLevel":82,"itemName":"Sword of Maximum Epicness","itemType":""},"6419800152996":{"itemLevel":45,"itemName":"Your Average Sword","itemType":""}}
这些当然都是出于测试目的的字段。我想做的是创建一个对象列表,其中列表是“库存”,而对象是物品。我已经尝试过使用Json.NET,Unity的内置JSON实用程序和各种技术,但找不到方法。我感到有点愚蠢,因为显然这不会那么困难。无论我尝试过哪个示例,它都不起作用。
如果可能的话,有人可以提供一种简单的方法来简要介绍如何从JSON创建对象列表吗?我只是无法自己解决这个问题,而且真的很令人沮丧。
答案 0 :(得分:2)
如果您希望使用JSON混合一个强类型的类,则可以执行以下操作:
要从JSON中混合对象,请使用以下内容:
MyObject myObject = JsonConvert.DeserializeObject(jsonPayload);
答案 1 :(得分:1)
我首先要下载Newtonsoft.Json
NuGet软件包。确保使用using Newtonsoft.Json
将其导入您的班级。
然后,我将创建一个Item
类:
public class Item
{
[JsonProperty("itemLevel")]
public long ItemLevel { get; set; }
[JsonProperty("itemName")]
public string ItemName { get; set; }
[JsonProperty("itemType")]
public string ItemType { get; set; }
}
然后,您可以使用JsonConvert.DeserializeObject
简单地将JSON反序列化为Dictionary<string, Item>
:
var deserializedJson = JsonConvert.DeserializeObject<Dictionary<string, Item>>(json);
测试
var json = "{\"5449000085757\":{\"itemLevel\":82,\"itemName\":\"Sword of Maximum Epicness\",\"itemType\":\"\"},\"6419800152996\":{\"itemLevel\":45,\"itemName\":\"Your Average Sword\",\"itemType\":\"\"}}";
var deserializedJson = JsonConvert.DeserializeObject<Dictionary<string, Item>>(json);
foreach (var entry in deserializedJson)
{
Console.WriteLine($"Key={entry.Key}, itemLevel={entry.Value.ItemLevel}, itemName={entry.Value.ItemName}, itemType={entry.Value.ItemType}");
}
输出
Key=5449000085757, itemLevel=82, itemName=Sword of Maximum Epicness, itemType=
Key=6419800152996, itemLevel=45, itemName=Your Average Sword, itemType=
答案 2 :(得分:0)
最好的办法是将其反序列化为Dictionary<string, object>
并遍历值并将其强制转换为所需的“ Item”类。