我通过Facebook API收到Json的回复,如下所示:
现在我想解析这些数据,以便可以在游戏中使用。为此,我编写了以下代码:
public void OnChallengesButtonClick ()
{
SoundManager.Instance.PlayButtonClickSound ();
FB.API ("/me/friends", HttpMethod.GET, RetrieveFacebookFriends);
}
public void RetrieveFacebookFriends (IGraphResult result)
{
if (!string.IsNullOrEmpty (result.Error)) {
Debug.Log ("ERROR: " + result.Error);
return;
}
IDictionary<string,object> friendsDict = result.ResultDictionary;
Debug.Log ("raw: " + result.RawResult);
}
那么如何通过Dictionary对象从可用的Json响应中提取名称和 ID 数据?
答案 0 :(得分:0)
基本上,您应该创建一个类来对对象进行序列化/反序列化:
class FBResponse
FBDataResponse data;
class FBDataResponse
string name;
string id;
在这里查看我的回复以获取更多详细信息(在“最终编辑”部分之后): Converting arrays of arrays to json
创建这两个类并使用它们反序列化FB响应应该很容易。请记住,您的变量将需要与Facebook的json响应匹配相同的名称(例如,您不能调用data data1)。
有了对象之后,就可以轻松地用它来做想要的事情了……并且有了对象,您应该可以再次获取json。
PS。 Unity默认的json序列化器不支持Dictionary,这就是为什么需要序列化两个对象的原因。如果您不希望这样做,则应尝试使用其他库。
答案 1 :(得分:0)
我认为这就是我所需要的:JSON with Unity
friends = (List<object>)(((Dictionary<string, object>)friendsH) ["data"]);
if(friends.Count > 0) {
var friendDict = ((Dictionary<string,object>)(friends[0]));
var friend = new Dictionary<string, string>();
friend["id"] = (string)friendDict["id"];
friend["first_name"] = (string)friendDict["first_name"];
}
在我无法从Facebook找到此帖子之前。