подход для разбора JSON в приложении .net - PullRequest
2 голосов
/ 09 августа 2011

Я пытаюсь разобрать ответ JSON от httpwebrequest fetch и немного неуверен после прочтения постов о нем, чтобы выяснить, какой из них будет лучшим для меня. Я получаю доступ к API-интерфейсу facebook facebook и хотел бы проанализировать все поля для данного сообщения.

"data": [
  {
     "id": "17xxxxxxxxxxxxx_xxxxxxxxxxxxxxxxxxx",
     "from": {
        "name": "Lxxxxxx",
        "category": "Sports league",
        "id": "17xxxxxxxxxxxxx"
     },
     "picture": "http://external.ak.fbcdn.net/safe_image.php?d=AQB4GscSy-2RHY_0&w=130&h=130&url=http\u00253A\u00252F\u00252Fwww.ligabbva.com\u00252Fquiz\u00252Farchivos\u00252Fbenzema-quiz-facebook.png",
     "link": "http://www.xxxxxva.com/quiz/index.php?qid=34",
     "source": "http://www.lxxxxva.com/modulos/redirectQuiz.php?name=benzema&q=34&time=1312827103",
     "name": "DEMUESTRA CU\u00c1NTO SABES SOBRE... BENZEMA",
     "caption": "www.xxxxxva.com",
     "description": "Demuestra cu\u00e1nto sabes sobre Karim Benzema, delantero del Real Madrid.",
     "icon": "http://static.ak.fbcdn.net/rsrc.php/v1/yj/r/v2OnaTyTQZE.gif",
     "type": "video",
     "created_time": "2011-08-08T18:11:54+0000",
     "updated_time": "2011-08-08T18:11:54+0000",
     "likes": {
        "data": [
           {
              "name": "Jhona Arancibia",
              "id": "100000851276736"
           },
           {
              "name": "Luis To\u00f1o",
              "id": "100000735350531"
           },
           {
              "name": "Manuel Raul Guerrero Cumbicos",
              "id": "100001485973224"
           },
           {
              "name": "Emmanuel Gutierrez",
              "id": "100000995038988"
           }
        ],
        "count": 127
     },
     "comments": {
        "count": 33
     }
  },
  {
     "id": "17xxxxxxxxxxxxxxxx_xxxxxxxxxxxxx",
     "from": {
        "name"

не все поля будут присутствовать всегда, но мне нужно иметь возможность перебирать каждый пост.

Обновление:

Я получаю сообщение об ошибке для следующей строки:

dim serializer as new jsonSerializer()
dim jsArray as JArray = directCast(serializer.Deserialize(New JsonTextReader _
     (New StringReader(responseData))), JArray)

ОШИБКА: невозможно привести объект типа newtonsoft.json.linq.jobject к типу newtonsoft.json.ling.jobject

Ответы [ 2 ]

5 голосов
/ 09 августа 2011

вы можете использовать дескриптор JSON newtonsoft

вы можете настроить объект данных с каждым из свойств и их под-свойств, а затем использовать атрибуты JSON для сопоставления объектов со свойствами

Пример кода от аналогичной вещи, которую я делал:

[JsonObject(MemberSerialization.OptIn)]
    public class Data
    {
        public override string ToString()
        {
            return Name;
        }

        [JsonProperty(PropertyName = "id")]
        public string Id{ get; set; }


    }

public Data DeserialiseData()
        {
            var data = JsonConvert.DeserializeObject<Data>("JSON string");

    return data;
}

больше информации можно найти здесь

1 голос
/ 09 августа 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...