【发布时间】:2019-09-04 13:33:02
【问题描述】:
我已经使用 WWW 将列表从 PHP 导入到 Unity。 WWW.text 包含以下内容:
[
{
"playerId": "1",
"playerLoc": "Pwoods"
},
{
"playerId": "2",
"playerLoc": "Shelter"
},
{
"playerId": "3",
"playerLoc": "Cemetery"
}
]
努力使用 Boomlagoon.JSON,但只使用了 1 个对象。
我发现我需要在这个列表中反序列化它们。
我需要的只是从每个JSON 对象中获取数据。 C# 怎么能做到这一点?
public class player
{
public string playerId { get; set; }
public string playerLoc { get; set; }
public string playerNick { get; set; }
}
仅返回第一个 KeyValuePair。
IDictionary<string, object> players = Json.Deserialize(serviceData) as IDictionary<string, object>;
foreach (KeyValuePair<string, object> kvp in players)
{
Debug.Log(string.Format("Key = {0}, Value = {1}", kvp.Key, kvp.Value));
}
【问题讨论】:
-
尝试反序列化为
IEnumerable,例如 ListList<player> players = Json.Deserialize<player>(serviceData);事实上,serviceData 中的每个玩家都将被视为自己的键值对字典,因此每个玩家都将被下一个反序列化的对象覆盖除非你反序列化为一个集合。 -
我会试试的,伙计。谢谢。
-
@DetectivePikachu 我认为语法是
Json.Deserialize<List<player>>(serviceData),因为它是一个列表。此外,对于 OP,只需将它们反序列化为已经提到的列表,完成后,您可以访问每个对象的成员;为什么要把它们放在字典里?