2016-08-03 17 views
0

ビットの説明。私はFacebook APIを使用してC#アプリケーションと統合していました。 FacebookはAPIを更新して以来。自分のコードでFacebookが返すJSON結果をそのまま使用することに問題があります。以前はJSONオブジェクトのFacebookによって返された結果。私は、JSONオブジェクトを希望どおりにする方法を知っていました。JSON文字列からデータを取得する方法

問題はJSONが文字列として返されることです。 JSON文字列からデータを取得するにはどうすればよいですか?

この

するFacebook

{"id":"t_mid.1468318160994:4fbaede7284fc37853","messages":{"data":[{"created_time":"2016-07-12T10:09:21+0000","id":"m_mid.1468318160994:4fbaede7284fc37853"}],"paging":{"previous":"https://graph.facebook.com/v2.6/t_mid.1468318160994:4fbaede7284fc37853/messages?access_token=[ACCESS-TOKEN]&limit=25&since=1468318161&__paging_token=[ACCESS-TOKEN]&__previous=1","next":"https://graph.facebook.com/v2.6/t_mid.1468318160994:4fbaede7284fc37853/messages?access_token=[ACCESS-TOKEN]&limit=25&until=1468318161&__paging_token=[ACCESS-TOKEN]"}}} 
    base {System.Dynamic.DynamicObject}: {"id":"t_mid.1468318160994:4fbaede7284fc37853","messages":{"data":[{"created_time":"2016-07-12T10:09:21+0000","id":"m_mid.1468318160994:4fbaede7284fc37853"}],"paging":{"previous":"https://graph.facebook.com/v2.6/t_mid.1468318160994:4fbaede7284fc37853/messages?access_token=[ACCESS-TOKEN]&__previous=1","next":"https://graph.facebook.com/v2.6/t_mid.1468318160994:4fbaede7284fc37853/messages?access_token=[ACCESS-TOKEN]&limit=25&until=1468318161&__paging_token=[ACCESS-TOKEN]"}}} 
    Count: 2 
    IsReadOnly: false 
    Keys: Count = 2 
    Values: Count = 2 

によって与えられたJSONでこの文字列

public class GetMesaggeIDUsingConversationID_API_V2_6 
{ 
    public messages id { get; set; } 
    public class messages 
    { 
     public Data[] data { get; set; } 
     public class Data 
     { 
      public string id { get; set; } 
     } 
    } 
} 

List<GetMesaggeIDUsingConversationID_API_V2_6> msgApiforGetMsgID = JsonConvert.DeserializeObject<List<GetMesaggeIDUsingConversationID_API_V2_6>>("JSON STRING HERE"); 

からデータを取得する私のコードですが、そのエラーになります。

エラーは次のとおりです。

"Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: The best overloaded method match for 'Newtonsoft.Json.JsonConvert.DeserializeObject<System.Collections.Generic.List<Orlig_Server_Services.Components.Refer.GetMesaggeIDUsingConversationID_API_V2_6>>(string)' has some invalid arguments\r\n at CallSite.Target(Closure , CallSite , Type , Object)\r\n at System.Dynamic.UpdateDelegates.UpdateAndExecute2[T0,T1,TRet](CallSite site, T0 arg0, T1 arg1)\r\n at Orlig_Server_Services.Components.FacebookIntegration.getFanMessage() in D:\\Projects\\Orlig_FB_Service V3.2 API V2.6\\Components\\FacebookIntegration.cs:line 2874" 

私にいくつかの提案をお願いします。前もって感謝します!

+0

あなたのfacebook api jsonが無効であるようです。私はそれをチェックし、フォーマットの結果は正しくないようです。それも配列ではないので、Json.Netでデシリアライズする前に応答のいくつかのデカップリングを行いたいかもしれません。 ここをクリックしてください:http://clip2net.com/s/3APtRnE – Jeff

答えて

0

あなたの文字列はJSON形式です。それらを解析したいので、JSON.NETを使用する必要があります。

string source = "JSON..." 
dynamic data = JObject.Parse(source); 

Console.WriteLine(data.id); 
Console.WriteLine(data.messages); 
// ... 
関連する問題