2011-12-09 10 views
0

ここで少し新しく質問します。私は、この場合には(次のようになりますJSON文字列を抽出して、それであるFacebookののOAuth2からの変更の復帰Asp.Net辞書内の深さからデータを抽出する<文字列、オブジェクト> -

{「ID」:「555555555555555」、「名」:「モンキー マン」、「LAST_NAME ":" 男 " "FIRST_NAME": "猿"、 "電子メール": "テスト\ u0040someaccount.com"、 "場所":{ "ID": "555555555555555"、 "名":" ジャングル、 ノースキャロライナ "}"、 "性別": "男性"、 "仕事":[{"雇用者:" "id": "555555555555555"、 "名前": "ビッグ ボス私を働かせます}}:"プロジェクト "現在の ":" ものをやって」、 "前": "その他 もの"}、 "場所":{ "ID": "555555555555555"、 "名前": "ジャングル、ノース カロライナ"}、 "位置": {"id": "555555555555555"、 "名前": "IT monkey "}、" start_date ":" 2010-09 "}]、" picture ":" http://profile.ak.fbcdn.net/static-ak/rsrc.php/v1/yo/r/5555555- 555.gif "}

まあ、私はその後、辞書から、次のようなデータを抽出し、オブジェクトに格納し、次のコード

JavaScriptSerializer ser = new JavaScriptSerializer(); 
    Dictionary<string, object> dict = ser.Deserialize<Dictionary<string,object>>(json); 

を使用して辞書にすべてを抽出することができていますかなり多くの文字列を集めた、いわゆる連絡先です。

if (d.ContainsKey("email")) 
    { 
     c.email = d["email"].ToString(); 
    } 
    else 
     c.email = ""; 

私はこのようにしましたが、情報フィールドがすべて存在するため、私はそれをしませんでした。

、このような私は、次のように変更されたコード(ことを行う方法を見せてくれた人に感謝)を使用したアドレスと同じように値に設定されたオブジェクトが存在する場合。

c.location = (d["location"] as Dictionary<string, object>)["name"].ToString(); 

ここで私は固執している難しい部分に来てください。

私は、文字列の次の部分から「ビッグ・ボスは私が仕事になり、」雇用者名を抽出しようとしています...

「仕事」:[{「雇用」:{「ID」: "": "プロジェクト":{"現在": "処理中"、 "前": "その他 "、 "場所":{"id ":" 555555555555555" 、 "名前": "ジャングル、ノース カロライナ"}、 "位置":{ "ID": "555555555555555"、 "名前": "ITは サル"}、 "START_DATE":「2010- 09" }]

それは、他のオブジェクトの内側の配列内にデータを格納していると私はそれを抽出するために情報を取得する方法、またはライブoauth2からこのような情報を抽出する方法もわからない...

" "住所":{"個人":{"ストリート":null、 "street_2":null、 "city": "ジャングル"、 "州": "NC"、 "postal_code": "28677" "米国 国"}、 "ビジネス":{ "ストリート": "ツリー・ストリート"、 "street_2":ヌル、 "都市": "ジャングル"、 "状態": "NC"、 "POSTAL_CODE":「28677 "、"地域 ": "米国 "}}

ご覧のとおりこれは3つのレベルの深さになるので、私(d ["location"] in Dictionary)["name"] ToString();ここではかなり役に立たない。これから通りの名前を言うことについてどうやって行きますか?

質問があまりにも漠然としていたり​​、ランダムではないことを願っています。辞書オブジェクトから適切にデータを抽出するためのアドバイスが必要です。私が思い付く方法は、JSON文字列の編集を含んでおり、私はちょうど自分自身で

おかげjsonlintを通して、あなたのJSONを実行

答えて

3

これを把握する辞書オブジェクトを十分理解していないとして、それは問題のalsortsを引き起こしこの場合

{ 
    "id": "555555555555555", 
    "name": "Monkey Man", 
    "last_name": "Man", 
    "first_name": "Monkey", 
    "email": "[email protected]", 
    "location": { 
     "id": "555555555555555", 
     "name": "Jungle, North Carolina" 
    }, 
    "gender": "male", 
    "work": [ 
     { 
      "employer": { 
       "id": "555555555555555", 
       "name": "Big Boss makes me work" 
      }, 
      "projects": { 
       "current": "doing stuff", 
       "previous": "other stuff" 
      }, 
      "location": { 
       "id": "555555555555555", 
       "name": "Jungle, North Carolina" 
      }, 
      "position": { 
       "id": "555555555555555", 
       "name": "IT monkey" 
      }, 
      "start_date": "2010-09" 
     } 
    ], 
    "picture": "http://profile.ak.fbcdn.net/static-ak/rsrc.php/v1/yo/r/5555555-555.gif" 
} 

あなたのJSONデータだけでは、実際に方法はありませんので、簡単な辞書オブジェクトにシリアル化する本当に適していません:.COM(と少しの修正)、それはこのフォーマットされたように見えますここに行く。

簡単な方法は、直列化していないJavascriptオブジェクトと同じプロパティを定義したC#クラスを作成することです。その後、そのオブジェクトとしてJSONを逆シリアル化して、 "" Big Bossにアクセスできるようにする必要があります。値はobjectFromJson.work[0].employer.nameになります。

関連する問題