2014-10-18 2 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" 
    ] 
    }, 

내가 문자열에 읽을 수있는, 즉 문제가 아니라, 내가 두 항목을 따르고 있습니다 고민하고있는 무슨.

는 ID의 다음 코드를 사용하여 얻을 수있는 방법을 찾았습니다

지금 내 도전은 콤보 상자에 그 목록을 받고, 목록에있는 모든 60 ID 년대를 반환
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() 

. 나는 다른 물건들과 함께이 일을 끝냈다는 것을 압니다.하지만이 일은 계속해서 저를 망설이고 있습니다.

콤보 박스 조각을 부드럽게 지나치게 생각하고 있습니다.

cmbWeaponID.DataSource = ID 

좋아, 이제 콤보 상자의 SelectedIndexChanged 각 ID의 데이터의 나머지 부분을 잡고 다른 텍스트 상자로 가져 오는 방법을 알아낼 수 있습니다.

는 다음 코드뿐만 아니라가는 것을 얻을 관리 :

 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

+0

지금까지 나는 SelectToken ("Items")을 사용하여 파일의 첫 번째 ID를 가져올 수있었습니다. SelectToken ("ItemObjects [0] .Id "). ToString) 그 g ets 날 첫 번째 항목 ID를하지만 나는 그들을 얻을 루프 작업을 할 수없는 것. –

답변

0

동안 너무 갔네 내가 매우 녹슨 모르지만, 나는 목록에 JSON을 도착 했더라면, 내가 필요한 모든이 있었다 :

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