2014-03-12 50 views
0

片段沒有從JSONvb.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,即時通訊不知道如何處理數組中沒有任何東西

+0

您的代碼正在嘗試執行什麼操作? – har07

+0

在標籤的新行輸出每個統計我知道如何顯示數據但我不知道如何使用嵌套 – ids

回答

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()來檢查集合(stats)中有多少數據(stat)。如果.Count()返回5以上,則意味着索引5處有數據。

+0

裏面沒有東西當我使用計數函數我似乎得到一個異常'{「對象引用「}' – ids

+0

它是我的(itemtypelbl.Text)導致的問題,是否有可能使用itemtypelbl中的文本定義一個值並在字符串中使用它? – ids

+0

是的,這是可能的。如果問題在第一條評論中是空引用,那麼第一步是找出哪個變量爲空。 [參考如何避免NullReferenceException](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it) – har07