将JSON数据解析为对象列表

时间:2011-08-17 10:06:05

标签: vb.net arrays json parsing facebook-graph-api

我是JSON的新手,我目前正在努力解决在对象列表中解析JSON数据的问题。

我试图解析的数据是由facebook graph api生成的,如下所示:

 {
  "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 :(得分:0)

你是对的,那不是JSON数组,它是一个包含FacebookUser对象的对象,其中id值也是元素键。

在.NET中,Dictionary类是等效的JSON对象,所以可能类似于

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"
  }
]

并且您的代码可以正常运行。