2

私は現在、c#でFacebook APIを使用しており、NewtonSoftJSONライブラリを使用して返されたすべてのAPIデータを使用しています。

ユーザーページのリストを返すと、シリアル化するために、返されたJSON内の属性に対して1回限りのクラスを作成していることに気付きます。

今私はこれを持っています:

    public class FacebookPage
    {
        public string id { get; set; }
        public string name { get; set; }
        public string link { get; set; }
        public string category { get; set; }
        public bool is_published { get; set; }
        public bool can_post { get; set; }
        public int likes { get; set; }
        public FacebookPageLocation location { get; set; }
        public string phone { get; set; }
        public int checkins { get; set; }
        public string picture { get; set; }
        public FacebookPageCover cover { get; set; }
        public string website { get; set; }
        public int talking_about_count { get; set; }
        public string access_token { get; set; }
    }
    public class FacebookPageLocation
    {
        public decimal latitude { get; set; }
        public decimal longitude { get; set; }
    }
    public class FacebookPageCover
    {
        public string cover_id { get; set; }
        public string source { get; set; }
        public int offset_y { get; set; }
    }

これを行うにはもっと良い方法があるに違いないようです。FacebookPageLocationをDictionaryに置き換えることはできますが、FacebookCoverPageを置き換えるにはどうすればよいですか?

理想的には、このようにネストされた形式で宣言できるようにしたいと思います。

    public class FacebookPage
    {
        id = string,
        name = string.
        link = string,
        category = string,
        is_published = bool,
        can_post = bool,
        likes = int,
        location = 
        {
            latitude = decimal,
            longtitude = decimal
        },
        phone = string,
        checkins = int,
        picture = string,
        cover  = 
        {
            cover_id = string,
            source = string,
            offset_y = int
        }
        website = string,
        talking_about_count = int,
        access_token = string
    }

これは実際には機能しないことはわかっていますが、この種のクラスをより適切に宣言するための何かがありますか?または不要ですか?

4

1 に答える 1

0

多くのクラスを宣言する代わりに、dynamic. 以下のサンプル json の場合

{
  "name": "joe",
  "id": 1151,
  "location": {
    "lat": 180.0,
    "lng": -180.0
  }
}

-

コードは

dynamic obj = JsonConvert.DeserializeObject(json);
Console.WriteLine("{0} {1} {2}", obj.id, obj.name, obj.location.lat);
于 2012-08-13T14:46:53.580 に答える