VB.Net JavaScriptSerializer只获取JSON数组的第一个值

时间:2014-09-23 15:27:46

标签: arrays json vb.net windows serialization

我目前正在尝试转换一些json

{"payload":{"versions":[{"1.0.2":{"vnum":"1.0.2","vloc":"http:\/\/*domainomitted*\/flyswatter\/files\/flyswatter_102.zip"},"1.0.1":{"vnum":"1.0.1","vloc":"http:\/\/*domainomitted*\/flyswatter\/files\/flyswatter_101.zip"}}]}}

进入VB.Net中的Iteratorable对象这是我目前所拥有的,但它只返回json数组中的第一个元素:

Dim vNum() As Object = j.getCfg("versions", False)
'Data is sent as versions:["1.0.1":{"vnum": "1.0.1", "vloc": "http://..."}, "1.0.2":{...}]

log("Populating:")
cbVSel.Items.Clear()

MessageBox.Show(vNum.Length) 'Returns 1
For Each ver As Dictionary(Of String, Object) In vNum
    Dim k As String = ver.Keys(0)
    MessageBox.Show(k.ToString()) 'Returns 1.0.2
Next

我觉得它很简单,但我现在已经有一段时间了。我也尝试过不同的对象,如HashTable,Array,Dictionary。

所以简而言之。我怎样才能使这个工作;使用JSON数组中的所有版本填充vNum

如果您需要查看JSON解析代码,请告诉我。非常感谢任何帮助。

谢谢!

1 个答案:

答案 0 :(得分:0)

所以我最终搞清楚了。就像我使用JSON一样简单我将服务器端更改为输出:

{"payload":{"versions":[{"vnum":"1.0.2","vloc":"http:\/\/*domainomitted*\/flyswatter\/files\/flyswatter_102.zip"},{"vnum":"1.0.1","vloc":"http:\/\/*domainomitted*\/flyswatter\/files\/flyswatter_101.zip"}]}}

一切都很好。谢谢你的时间!