1. ホーム
  2. c#

[解決済み】C#でJSONをデシリアライズする。

2022-04-06 05:59:06

質問

Facebook の友人の グラフAPI の呼び出しをオブジェクトのリストに変換します。JSONオブジェクトは次のようなものです。

{"data":[{"id":"518523721","name":"ftyft"},
         {"id":"527032438","name":"ftyftyf"},
         {"id":"527572047","name":"ftgft"},
         {"id":"531141884","name":"ftftft"},
         {"id":"532652067","name"...

List<EFacebook> facebooks = new JavaScriptSerializer().Deserialize<List<EFacebook>>(result);

プリミティブオブジェクトが無効なため、うまくいきません。どうすればデシリアライズできるのでしょうか?

どのように解決するのですか?

このような構造を作る必要があります。

public class Friends
{

    public List<FacebookFriend> data {get; set;}
}

public class FacebookFriend
{

    public string id {get; set;}
    public string name {get; set;}
}

それなら、できるはずです。

Friends facebookFriends = new JavaScriptSerializer().Deserialize<Friends>(result);

私のクラス名は単なる一例です。適切な名前を使うべきです。

サンプルテストの追加

string json =
    @"{""data"":[{""id"":""518523721"",""name"":""ftyft""}, {""id"":""527032438"",""name"":""ftyftyf""}, {""id"":""527572047"",""name"":""ftgft""}, {""id"":""531141884"",""name"":""ftftft""}]}";

Friends facebookFriends = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<Friends>(json);

foreach(var item in facebookFriends.data)
{
    Console.WriteLine("id: {0}, name: {1}", item.id, item.name);
}

プロデュースします。

id: 518523721, name: ftyft
id: 527032438, name: ftyftyf
id: 527572047, name: ftgft
id: 531141884, name: ftftft