我是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
我知道这不是一个数组,因为它缺少'['和']'。但是,当我用'['和']'替换'{'和'}'时,我因为一个镶嵌的矩阵而出错了。
有人可以指出我正确的方向吗?
答案 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"
}
]
并且您的代码可以正常运行。