1

facebook c#sdkからjsonデータを解析しようとしています。私が解析しようとしているjsonデータは、Facebookで確認できます:https ://graph.facebook.com/search?q =coffee&type = place&center = 37.76、-122.427&distance = 1000&access_token = AAAAAAITEghMBACQupPhpGCGi1Jce7eMfZCzt9GlpZBdhz3PlGCyHKNZ

以下の私のコードは、このjsonオブジェクトの最初の次元を示すメッセージボックスをポップアップしますが、ご覧のとおり、経度や緯度などの位置情報を提供する2番目の次元が各アイテム内にあります。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);
                      }

だから、あなたはJsonArray好きIEnumerable<object>と一緒に働くことができJsonObjectますIDictionary<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 に答える