2015-07-30 2 views
-1

У меня возникла проблема десериализации этого JSON в VB. Я могу получить значение только в каждом массиве, но не могу получить ключ, который является именами полей в моих таблицах. Вы заметите, что каждый объект может меняться по размеру, который я могу обрабатывать при десериализации.Deserialise JSON in VB

может кто-нибудь помочь?

{ 
"MATRIX": [ 
    { 
     "1": "FM", 
     "2": "4", 
     "3": "Floor type", 
     "4": "Standing water", 
     "5": "Property unsafe" 
    }, 
    { 
     "1": "FM", 
     "2": "4", 
     "3": "Ceiling", 
     "4": "Mould spores", 
     "5": "Room/property still safe" 
    }, 
    { 
     "1": "FL", 
     "2": "Basement", 
     "3": "1" 
    }, 
    { 
     "1": "FL", 
     "2": "External", 
     "3": "7" 
    }, 
    { 
     "1": "FL", 
     "2": "First Floor", 
     "3": "3" 
    }, 
    { 
     "1": "FL", 
     "2": "Garden", 
     "3": "6" 
    }, 
    { 
     "1": "FL", 
     "2": "Ground Floor", 
     "3": "2" 
    }, 
    { 
     "1": "FL", 
     "2": "Second Floor", 
     "3": "4" 
    }, 
    { 
     "1": "FL", 
     "2": "test 2", 
     "3": "9" 
    }, 
    { 
     "1": "FL", 
     "2": "Third Floor", 
     "3": "5" 
    }, 
    { 
     "1": "CA", 
     "2": "Bath", 
     "3": "Bathroom", 
     "4": "Bath" 
    }, 
    { 
     "1": "CA", 
     "2": "Electrical", 
     "3": "Bathroom", 
     "4": "Bathroom Socket" 
    } 
    ] 
} 

Спасибо заранее,

D :)

Привет снова .. Я попробовал код из второго предложения, но не может получить ключ и значение для каждого элемента в то же время , Я получаю ключи, а затем значения для каждой итерации моей строки.

Это то, что я делаю. Пожалуйста, вы можете указать на мою ошибку ..

 Dim json As String = "{""items"":[{""Name"":""John"",""Age"":""20"",""Gender"":""Male""},{""Name2"":""Tom"",""Age2"":""25"",""Gender2"":""Male""},{""Name3"":""Sally"",""Age3"":""30"",""Gender3"":""Female""}]}" 

    Dim jss = New JavaScriptSerializer() 
    Dim data = jss.Deserialize(Of Object)(json) 

    For i = 0 To 2 
     For Each key As String In data("items")(i).Keys 
      MsgBox(key) 
     Next 
     'For Each item As Dictionary(Of String, Object) In data("items") 
     For Each val As String In data("items")(i).Values 
      MsgBox(val) 
     Next 
    Next 

Еще раз спасибо,

Дерек.

+0

Пожалуйста, включите код, который вы используете – Plutonix

+1

возможный дубликат [Deserializing JSON в Visual Basic] (http://stackoverflow.com/questions/20079177/deserializing-json-in-visual-basic) –

+2

Кроме того, это недопустимо или неполно и как вы построили будут иметь проблемы с опорой erties с именем «1», «2», «3» ... – Plutonix

ответ

0

Если я понять вопрос правильно, вы можете использовать клавиши, чтобы получить соответствующие значения, используя что-то вроде этого:

For Each item In data("items") 
    Console.WriteLine("***item***") 
    For Each key In item.Keys 
     Console.WriteLine("{0}:{1}", key, item(key)) 
    Next 
Next 

, который производит следующий вывод:

 
***item*** 
Name:John 
Age:20 
Gender:Male 
***item*** 
Name2:Tom 
Age2:25 
Gender2:Male 
***item*** 
Name3:Sally 
Age3:30 
Gender3:Female 
+0

Спасибо, Марк, это было именно то, что мне нужно .. Спасибо всем, что помогло и предложило тоже .. Большое спасибо .. –

Смежные вопросы