0

Facebookから取得したJSONデータを逆シリアル化しようとしていますが、パブリッククラスで宣言しようとすると「F.18-24」が無効な変数であるため、c#は許可しません。「メトリック」フィールドを逆シリアル化できましたが、「F.18-24」フィールドについては、どうすればよいかわかりません。どんな助けでも大歓迎です。c# が F.18-24 を読み取るためにExt.data.Recordと関係がありますか?

Facebook から取得した JSON データ:

{"data":[
{
    "metric":"page_fans_gender_age", 
    "value":
        {"F.18-24":19,
        "M.18-24":14,
        "M.25-34":4,
        "F.13-17":1,
        "M.13-17":1
}}]}

そして、逆シリアル化する私のコード:

//geting isights data age & gender
    private void kryptonButton1_Click_2(object sender, EventArgs e)
    {
        try
        {

          var client = new FacebookClient(myToken.Default.token);
          var query = string.Format("SELECT metric, value FROM insights WHERE object_id=132414626916208 AND metric='page_fans_gender_age' AND period = period('lifetime') AND end_time = end_time_date('2013-01-18')");

            dynamic parameters = new ExpandoObject();
            parameters.q = query;
            dynamic results = client.Get("/fql", parameters);

            JavaScriptSerializer sr = new JavaScriptSerializer();
            String jsondata = String.Empty;
            jsondata = results.ToString();

            genderAgeDataII converted = sr.Deserialize<genderAgeDataII>(jsondata);
            Console.WriteLine(converted);
        }

        catch (Exception ex) {
            MessageBox.Show(ex.Message);
        }

    }


}

//class for JSON Deserialize
public class genderAgeDataII
{
    public genderAgeData[] data { get; set; }
}

public class genderAgeData
{
    public string metric { get; set; }
    public genderAge value { get; set; }
}

public class genderAge
{
    //public string numbers { get; set; }
    /*string f1824 = "F.18-24";
    string m1824 = "M.18-24";
    string m2534 = "M.25-34";
    string f1317 = "F.13-17";
    string m1317 = "M.13-17"; */

    public int f1824 { get; set; }
    public int m1824 { get; set; }
    public int m2534 { get; set; }
    public int f1317 { get; set; }
    public int m1317 { get; set; }
}
4

1 に答える 1

0

FB C#SDKはジェネリックをサポートしています。あなたはそれをとして使うことができます

var data = fb.Get<genderAgeDataII>("fql", parameters);

https://github.com/facebook-csharp-sdk/facebook-csharp-sdk/pull/203

次に、データコントラクトとデータメンバーを使用します

[DataContract]
public class genderAge
{
    //public string numbers { get; set; }
    /*string f1824 = "F.18-24";
    string m1824 = "M.18-24";
    string m2534 = "M.25-34";
    string f1317 = "F.13-17";
    string m1317 = "M.13-17"; */

    [DataMember(Name="F.18-24")]
    public int f1824 { get; set; }
    .....
}
于 2013-01-25T04:33:30.917 に答える