Разбор данных JSON в список объектов - PullRequest
0 голосов
/ 17 августа 2011

Я новичок в JSON и в настоящее время борюсь с проблемой анализа данных JSON в списке объектов.

Данные, которые я пытаюсь проанализировать, генерируются API-интерфейсом facebook facebook и выглядят так:

 {
  "100001621071794": {
    "id": "100001621071794",
    "name": "TEST1",
    "username": "test1",
    "link": "http://www.facebook.com/test1",
    "gender": "male",
    "picture": "http://profile.ak.fbcdn.net/test1.jpg"
    },
  "534237692": {
    "id": "534237692",
    "name": "TEST2",
    "username": "test2",
    "link": "http://www.facebook.com/test2",
    "gender": "female",
    "picture": "http://profile.ak.fbcdn.net/test2.jpg"
   }
}

Я использую следующий код для анализа:

Dim MyFacebookUsers As List(Of FacebookUser) = MyTwitterSerializer.Deserialize(Of List(Of FacebookUser))(FBData)

Класс FacebookUser выглядит следующим образом:

Public Class FacebookUser  
  Public id As String  
  Public name As String  
  Public username As String  
  Public link As String  
  Public gender As String  
  Public picture As String  
End Class  

Я знаю, что это не массив, потому что в нем отсутствуют '[' и ']'.Но когда я заменяю '{' и '}' на '[' и ']', я получаю ошибку из-за инкрустации матрицы.

Может кто-нибудь указать мне правильное направление?

1 Ответ

0 голосов
/ 04 апреля 2012

Вы правы, это не массив JSON, это объект, содержащий объекты FacebookUser, где значение id также является ключом элемента.

В .NET класс Dictionary является эквивалентом JSON Object, поэтому предположительно что-то вроде

Dim MyFacebookUsers As List(Of FacebookUser) = MyTwitterSerializer.Deserialize(Of Dictionary(Of FacebookUser))(FBData) 

это то, что вам нужно.

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

[
 {"id": "100001621071794",
  "name": "TEST1",
  "username": "test1",
  "link": "http://www.facebook.com/test1",
  "gender": "male",
  "picture": "http://profile.ak.fbcdn.net/test1.jpg"
  },
 {"id": "534237692",
  "name": "TEST2",
  "username": "test2",
  "link": "http://www.facebook.com/test2",
  "gender": "female",
  "picture": "http://profile.ak.fbcdn.net/test2.jpg"
  }
]

и ваш код работал бы нормально.

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