VB.Net选择具有相同名称的嵌套Json

时间:2014-02-26 16:07:04

标签: json vb.net

示例json(摘录自有效的json

"items": {
"average": 564,
"head": {
  "id": 99161,

我已经知道如何显示和选择我当前使用的值

average.text = If(jResults("average") Is Nothing, "", jResults("average").ToString())
id.text =If(jResults("items")("head") Is Nothing, "", jResults("items")("head")("id").ToString())

但我不确定如何从以下代码段中提取统计值,因为stat已被多次使用

"items": {
"averageItemLevel": 564,
"averageItemLevelEquipped": 564,
"head": {
  "id": 99161,
  "stats": [
    {
      "stat": 32,
      "amount": 651,
      "reforgedAmount": -434
    },
    {
      "stat": 5,
      "amount": 2001
    },
    {
      "stat": 36,
      "amount": 1544
    },
    {
      "stat": 7,
      "amount": 3362
    },
    {
      "stat": 49,
      "amount": 434,
      "reforged": true
    }
  ],
  "armor": 2244
},

我不确定如何提取每个统计数据并使用我之前使用的字符串将其放在不同的框中

average.text = If(jResults("average") Is Nothing, "", jResults("average").ToString())

据我所知,我可能不得不使用精选案例,但我不知道如何使用我现有的字符串来确定每个统计数据

感谢

1 个答案:

答案 0 :(得分:0)

看起来您必须在“stats”上使用数组索引,因此在您的示例JSON中,您可以使用

获取前两个值
jResults("items")("head")("stats")(0)("stat").ToString() ' = "32"

jResults("items")("head")("stats")(1)("stat").ToString() ' = "5"

因此,如果你想要总计所有“stat”字段,你可以这样做:

    Dim statTotal As Integer = 0
    For i As Integer = 0 To jResults("items")("head")("stats").Count - 1
        statTotal += CInt(jResults("items")("head")("stats")(i)("stat"))
    Next

(当然,在现实世界中,你需要检查以确保每个人都不是Nothing,并且IsNumeric()在将Cnt()投入其中之前是真的。)

希望有所帮助!