vb.net JSON嵌套没什么

时间:2014-03-12 23:45:55

标签: json vb.net

来自JSON的片段

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

我当前的代码

stat0lbl.Text = If(jResults("items")(itemtypelbl.Text) Is Nothing, "", jResults("items")(itemtypelbl.Text)("stats")(0)("stat").ToString()) + Environment.NewLine + If(jResults("items")(itemtypelbl.Text) Is Nothing, "", jResults("items")(itemtypelbl.Text)("stats")(1)("stat").ToString()) + Environment.NewLine + If(jResults("items")(itemtypelbl.Text) Is Nothing, "", jResults("items")(itemtypelbl.Text)("stats")(2)("stat").ToString()) + Environment.NewLine + If(jResults("items")(itemtypelbl.Text) Is Nothing, "", jResults("items")(itemtypelbl.Text)("stats")(3)("stat").ToString()) + Environment.NewLine + If(jResults("items")(itemtypelbl.Text) Is Nothing, "", jResults("items")(itemtypelbl.Text)("stats")(4)("stat").ToString()) + Environment.NewLine + If(jResults("items")(itemtypelbl.Text)("stats")(5) Is Nothing, "", jResults("items")(itemtypelbl.Text)("stats")(5)("stat").ToString())

此代码完美无缺,直到数组中的stat 5为止,我不知道如何处理数组中的Is Nothing

1 个答案:

答案 0 :(得分:0)

我认为推动单行执行此逻辑并不会带来任何优势,但代码可读性更低(冗余检查jResults("items")(itemtypelbl.Text) Is Nothing)。我建议在标准If块(如果可能)中执行此操作:

If jResults("items")(itemtypelbl.Text) Is Not Nothing Then
    Dim newStat = _
        jResults("items")(itemtypelbl.Text)("stats")(0)("stat").ToString() & Environment.NewLine & _
        jResults("items")(itemtypelbl.Text)("stats")(1)("stat").ToString() & Environment.NewLine & _
        jResults("items")(itemtypelbl.Text)("stats")(2)("stat").ToString() & Environment.NewLine & _
        jResults("items")(itemtypelbl.Text)("stats")(3)("stat").ToString() & Environment.NewLine & _
        jResults("items")(itemtypelbl.Text)("stats")(4)("stat").ToString() & Environment.NewLine

    If jResults("items")(itemtypelbl.Text)("stats").Count() > 5 Then
        newStat &= jResults("items")(itemtypelbl.Text)("stats")(5)("stat").ToString()
    End If

    stat0lbl.Text = newStat
End If

我认为主要的混淆是如何检查索引5处的stat是否存在。如上所示,一种可能的方法是使用.Count()检查集合(stat)中的数据量(stats)。如果.Count()返回的值超过5,则意味着索引为5的数据。