1

我正在尝试从 facebook c# sdk 解析 json 数据。The json data I'm trying to parse can be seen here at facebook: https://graph.facebook.com/search?q=coffee&type=place¢er=37.76,-122.427&distance=1000&access_token=AAAAAAITEghMBACQupPhpGCGi1Jce7eMfZCzt9GlpZBdhz3PlGCyHKNZB1r4FHgd9mgpm8W3g4Adpy9jJjFrsDuxcu3pE4uRT1lbIQjYKgZDZD

我下面的代码会弹出一个消息框,显示这个 json 对象的第一个维度,但是,如您所见,每个项目中有一个第二个维度,它提供位置信息,例如经度和纬度。我正在努力寻找一个示例,说明如何使用 WP7 C# 获得此功能(互联网上的大多数示例都使用在 WP7 上不可用的库)。

        fbClient.GetCompleted += (o, er) =>
        {
           if (er.Error == null)
           {
              var result = (IDictionary<string, object>)er.GetResultData();
              Dispatcher.BeginInvoke(() =>
              {
                  foreach (var item in (JsonArray)result["data"])
                  {
                     //message box for testing purposes
                     MessageBox.Show((string)((JsonObject)item)["name"]);
                  }
              });
           }
        });

有人可以提供一个简单的例子吗?

谢谢。

4

1 回答 1

1

因为您与 FacebookSDK 一起使用,所以不需要直接与 json 一起使用。只需将 JsonObjects 转换为 IDictionary 并像 Dictionary 一样使用它:

//think better use IEnumerable<object>, because you don't really need JSON array
    foreach (var item in (IEnumerable<object>)result["data"])
                      {
                         var name = (item as IDictionary<string, object>)["name"];
                         //message box for testing purposes
                         MessageBox.Show(name);
                      }

因此,您可以使用JsonArraylikeIEnumerable<object>JsonObjectlikeIDictionary<string, object>

回答你的问题:

var item1 = (IDictionary<string, object>)item;
var location = ((IDictionary<string, object>)(item1)["location"]);
var long = location["longitude"];

或者您可以使用 JSON 来实现:

var location = ((JsonObject)((JsonObject)item)["location"]);
var long = location["longitude"];
于 2012-05-27T08:53:17.343 回答