使用miniJSON将JSON中的数组转换为foreach

时间:2014-06-05 12:07:24

标签: c# json dictionary unity3d

我在Unity中使用Facebook SDK邀请人们加入我的游戏。在邀请时,我得到了我邀请的人的Facebook ID回复。我现在想要在我的游戏中创建一个与他们一起作为对手的游戏,并且如果我可以将id分成一个foreach循环,我就可以这样做,但我不知道该怎么做。

这是JSON响应的样子:

{"to":["755111373","1144265875"],"request":"730979703615028"}

在Unity C#中我然后使用MiniJSON(Facebook首选)将数据输入到这样的对象中:

var userReq = Json.Deserialize(fbresult.Text) as Dictionary<string,object>; 

现在通常情况下,如果对象不是数组,我只会得到每个json对象的数据:

userReq["to"]

但是,由于这是一个阵列,所以不可能。然后我试着把它放到像这样的foreach循环中:

foreach(var auser in userReq["to"]){
    int fbid = auser;
}

但由于以下原因无法做到:

  

foreach语句不能对类型&#39; object&#39;的变量进行操作。因为它不包含&#39; GetEnumerator&#39;的定义或者无法访问

我想我必须先将它放入列表或字典中,但我不知道如何才能做到这一点。那么如何将JSON值放入我可以迭代的列表中呢?

1 个答案:

答案 0 :(得分:2)

你应该能够简单地将对象转换为List<object>,然后迭代它。 例如,获取数据并执行以下操作:

var userReq = Json.Deserialize(fbresult.Text) as Dictionary<string,object>; 

List<object> numbers = (List<object>)(userReq["to"]);
foreach(string s in numbers)
{
    Debug.Log("Number: " + s);
}

将打印两个字符串

  

编号:755111373
  编号:1144265875

在控制台中。