【发布时间】:2016-05-23 05:46:47
【问题描述】:
我目前正在使用 facebook,并且我有一个回调方法,可以将 JSON 结果作为字符串返回。
结果格式如下:
{
"request": "420211088059698",
"to": [
"100002669403922",
"100000048490273"
]
}
我将如何将“to”解析为某种列表?这样我就可以使用这个列表来验证用户确实确实向朋友发送了玩游戏的请求。
谢谢大家
【问题讨论】:
我目前正在使用 facebook,并且我有一个回调方法,可以将 JSON 结果作为字符串返回。
结果格式如下:
{
"request": "420211088059698",
"to": [
"100002669403922",
"100000048490273"
]
}
我将如何将“to”解析为某种列表?这样我就可以使用这个列表来验证用户确实确实向朋友发送了玩游戏的请求。
谢谢大家
【问题讨论】:
您可以使用 JSON.Net 反序列化为以下结构的类:
Class Test{
public string request {get;set;}
public List<string> to {get;set;}
}
然后只需在 JSON 字符串上调用反序列化方法来获取对象。
Test obj = JsonConvert.DeserializeObject<Test>(jsonstring);
【讨论】:
您需要将其转换为类数组。这可以通过 Unity 内置的 JsonUtility API 来完成。
JsonUtility.ToJson 将类转换为 Json。
JsonUtility.FromJson 将 Json 转换回类。
访问hereJson 数组示例。
编辑:
你要求一个例子:
class FacebookInfo
{
public string request;
public string[] to;
}
void Start()
{
FacebookInfo fbInfo = new FacebookInfo();
string fbJson = "{\"request\": \"420211088059698\",\"to\": [\"100002669403922\",\"100000048490273\"]}";
fbInfo = JsonUtility.FromJson<FacebookInfo>(fbJson);
//Show request
Debug.Log("Request: " + fbInfo.request);
//Show to arrays
for (int i = 0; i < fbInfo.to.Length; i++)
{
Debug.Log("To : " + fbInfo.to[i]);
}
}
使用 Unity 5.4.0.13B 测试,看起来 Unity 现在支持 Json 数组,无需编写额外代码。请确保您拥有我提到的这个版本。
【讨论】:
只需使用 SimpleJson http://wiki.unity3d.com/index.php/SimpleJSON ,不需要额外的工作,查看示例,您需要做的就是使用 JSON.Parse 和一个数组,并且可以像 data["request"] 一样使用它来获取值,希望这会有所帮助。
【讨论】: