2014-10-18 105 views
0

我正在嘗試構建我認爲應該是相對簡單的閱讀器/編輯器,這是一個非常特別格式化的JSON文件,主要是爲了防止用戶搞亂語法。使用JSON文件中的數據填充組合框

JSON格式是:

"Items": { 
"defaultActionClass": "Weaponclass", 
"ItemObjects": [ 
    { 
    "Id": "M16", 
    "Name": "EM16", 
    "Description": "Some Description", 
    "Icon": "Icons/pictures/1.png", 
    "AnimationSet": "Set1", 
    "Type": "Weapon", 
    "EquipmentClass": "Hands", 
    "SlotsCount": 2, 
    "Weight": 1, 
    "AP": 1, 
    "BurstFire": 1, 
    "AutoFire": 0, 
    "EffectiveRange": 8.0, 
    "MuzzleVelocity": 2.5, 
    "BaseAccuracy": 100.0, 
    "Mobility": 6.0, 
    "Damage": 30, 
    "DamageFalloff": 30, 
    "AmmoClips": [ 
     "AmmoClip556NATOx30" 
    ] 
    }, 

我可以在字符串中讀出,這不是一個問題,就是我用的以下兩項掙扎。

找到一種方式來獲得標識的使用下面的代碼:

Dim root As RootObject = JsonConvert.DeserializeObject(Of RootObject)(strjson) 
Dim ID As List(Of String) = root.Items.ItemObjects.Select(Of String)(Function(tp) tp.Id).ToList() 

返回所有60個ID在列表中的,現在我的挑戰是讓該列表到組合框。我知道我之前已經用其他物品做過這件事,但這件事仍在逃避我。

光滑過度組合框片。

cmbWeaponID.DataSource = ID 

好了,現在要弄清楚如何從每個ID獲取數據的其餘部分上的SelectedIndexChanged組合框,並將其導入不同的文本框中。

設法與下面的代碼的那麼順利:

 Dim o As JObject = JObject.Parse(strjson) 
    Dim Type As String = CStr(o.SelectToken("Items.ItemObjects[" & cmbWeaponID.SelectedIndex & "].Type")) 
    Dim Name As String = CStr(o.SelectToken("Items.ItemObjects[" & cmbWeaponID.SelectedIndex & "].Name")) 
    Dim Description As String = CStr(o.SelectToken("Items.ItemObjects[" & cmbWeaponID.SelectedIndex & "].Description")) 
    Dim Icon As String = CStr(o.SelectToken("Items.ItemObjects[" & cmbWeaponID.SelectedIndex & "].Icon")) 
    Dim AnimationSet As String = CStr(o.SelectToken("Items.ItemObjects[" & cmbWeaponID.SelectedIndex & "].AnimationSet")) 
    Dim SlotsCount As String = CStr(o.SelectToken("Items.ItemObjects[" & cmbWeaponID.SelectedIndex & "].SlotsCount")) 
    Dim Weight As String = CStr(o.SelectToken("Items.ItemObjects[" & cmbWeaponID.SelectedIndex & "].Weight")) 
    Dim APCost As String = CStr(o.SelectToken("Items.ItemObjects[" & cmbWeaponID.SelectedIndex & "].AP")) 
    Dim BurstFire As String = CStr(o.SelectToken("Items.ItemObjects[" & cmbWeaponID.SelectedIndex & "].BurstFire")) 
    Dim AutoFire As String = CStr(o.SelectToken("Items.ItemObjects[" & cmbWeaponID.SelectedIndex & "].AutoFire")) 
    Dim EffectiveRange As String = CStr(o.SelectToken("Items.ItemObjects[" & cmbWeaponID.SelectedIndex & "].EffectiveRange")) 
    Dim MuzzleVelocity As String = CStr(o.SelectToken("Items.ItemObjects[" & cmbWeaponID.SelectedIndex & "].MuzzleVelocity")) 
    Dim BaseAccuracy As String = CStr(o.SelectToken("Items.ItemObjects[" & cmbWeaponID.SelectedIndex & "].BaseAccuracy")) 
    Dim Mobility As String = CStr(o.SelectToken("Items.ItemObjects[" & cmbWeaponID.SelectedIndex & "].Mobility")) 
    Dim Damage As String = CStr(o.SelectToken("Items.ItemObjects[" & cmbWeaponID.SelectedIndex & "].Damage")) 
    Dim DamageFalloff As String = CStr(o.SelectToken("Items.ItemObjects[" & cmbWeaponID.SelectedIndex & "].DamageFalloff")) 
+0

很容易看看http://json.codeplex.com/ – meda 2014-10-18 14:46:13

+0

到目前爲止,我已經能夠使用 SelectToken(「Items」)從文件中拉出第一個ID SelectToken(「ItemObjects [0] .Id「)。ToString) 那g讓我知道第一個項目ID,但我似乎無法完成所有工作。 – 2014-10-18 15:48:52

回答

0

已經有一段時間,所以我很生疏,但一旦我得到了JSON到一個列表,所有我需要的是這樣的:

Dim ID As List(Of String) = root.Items.ItemObjects.Select(Of String)(Function(tp) tp.Id).ToList() 
cmbWeaponID.DataSource = ID