2016-04-12 1 views
0

Мы используем вызов FB.API для получения комментариев к сообщению, мы не можем получить данные, вложенные под «from».Facebook.MiniJSON Deserialize комментарии и вложенные значения от возвращаемых значений

API Explorer команда: "10153539873517828/comments?"

C# код

FB.API("/10153539873517828/comments?", HttpMethod.GET, delegate (IGraphResult result) 
       { 
      string jsonMessage = result.RawResult; 
      Debug.Log(jsonMessage); 
      var soap = Json.Deserialize(jsonMessage) as Dictionary<string,object>; 
      List<object> entries = soap["data"] as List<object>; 

      try 
      { 
       for (int i = 0; i < soap.Count; i++) 
       { 
        Dictionary<string,object> messageData = entries[i] as Dictionary<string,object>; 
        object resultData = messageData["message"];    (Works) 
        object resultData = messageData["name"];     (Blank) 
        Debug.Log("JSON string : " + resultData.ToString()); 
       } 
      } 
      catch 
      { 
       Debug.Log("Done!!!"); 
      } 
     }); 

JSON строку

{ 
    "data": [ 
    { 
     "created_time": "2016-03-31T11:10:18+0000", 
     "from": { 
     "name": "Hello world", 
     "id": "298062736962722" 
     }, 
     "message": "Test comment", 
     "id": "10153539873517828_10153539875377828" 
    }, 
    { 
     "created_time": "2016-03-31T11:12:47+0000", 
     "from": { 
     "name": "Hello world", 
     "id": "298062736962722" 
     }, 
     "message": "people must be wonder what the bleep is this, lol.", 
     "id": "10153539873517828_10153539877202828" 
    } 
    ], 
    "paging": { 
    "cursors": { 
     "before": "WTI5dGJXVnVkRjlqZAFhKemIzSTZANVEF4TlRNMU16azROelV6TnpjNE1qZAzZANVFExT1RReU1qWXhPQT09", 
     "after": "WTI5dGJXVnVkRjlqZAFhKemIzSTZANVEF4TlRNMU16azROemN5TURJNE1qZAzZANVFExT1RReU1qYzJOdz09" 
    } 
    } 
} 

Мы можем успешно получить «сообщение» и «идентификатор» в разделе «данные» при попытке получить «имя» и связанный с ним " id "он возвращает пустые значения.

Мы прочитали много сообщений и посмотрели на некоторые из опубликованных решений, и мы не нашли ничего, что помогло бы решить проблему.

Поскольку мы используем FB SDK, это будет означать, что мы должны использовать Facebook.MiniJSON для десериализации вышеприведенной строки. Извлечение:

 { 
    "created_time": "2016-03-31T11:10:18+0000", 
    "from": { 
     "name": "Hello world", 
     "id": "298062736962722" 
    }, 
    "message": "Test comment", 
    "id": "10153539873517828_10153539875377828" 
    }, 

Все примеры документации разработчика охватывают только поиск первого уровня, как мы можем это исправить?

ответ

1

имя не существует в контексте поиска. Доступны только следующие ключи: created_time, от, Сообщение, ID. Вам необходимо создать словарь из от и указать имя. Вот такое изменение, которое я бы предложил. Это не проверено, и я просто захватил ваш внутренний цикл и изменил его. Очевидно, интегрируйте обратно в остальную часть вашего кода.

... 
for (int i = 0; i < soap.Count; i++) 
{ 
    Dictionary<string,object> messageData = entries[i] as Dictionary<string,object>; 
    object resultData = messageData["message"]; 
    Dictionary<string,object> fromData = messageData["from"] as Dictionary<string, object>; 
    object resultData = fromData["name"] 
    Debug.Log("JSON string : " + resultData.ToString()); 
} 
... 
+0

Большое вам спасибо, вы ниндзя !!! –

Смежные вопросы