2011-02-01 64 views
2

反序列化JSON數組我有如下格式化的JSON數組:在vb.net

[ 
    { 
    "property":96, 
    "listofstuff":[ 
     { 
     "anotherproperty":"some text here", 
     "yetanother":"text goes here too" 
     } 
    ], 
    "lastproperty":3001 
    }, 
<rest of array> 
] 

我怎麼能在這樣我可以有由property索引對象列表的方式反序列化呢?意思是說,我想能夠訪問像這樣的數據:MyList(96).lastpropertyMyList(96).listofstuff.yetanother,並讓它返回適當的數據類型?這甚至可能在vb.net?

+0

我真的試圖解析它與正則表達式原來,事後看起來似乎不是最聰明的方式去... – Cyclone 2011-02-01 22:53:21

回答

2

我同意你需要使用JSON庫Json.NET發現在http://json.codeplex.com/

因此,考慮到你的榜樣JSON數組,我做了下列類可以用於序列化和反序列化:

Public Class Item 
    Public Property [property]() As Integer 
    Public Property listofstuff() As Stuff() 
    Public Property lastproperty() As Integer 
End Class 

Public Class Stuff 
    Public Property anotherproperty() As String 
    Public Property yetanother() As String 
End Class 

然後,所有你需要的是下面的代碼能夠訪問大致您想要的方式來數據:

Dim Items = Newtonsoft.Json.JsonConvert.DeserializeObject(Of Item())(json) 
Dim MyList = Items.ToDictionary(Function(x) x.property) 
Dim Stuff = MyList(96).listofstuff(0) 

如果與listofstuff屬性數組你的目的是爲了存儲任何字符串,然後對使用此定義Item(你也不會需要Stuff類):

Public Class Item 
    Public Property [property]() As Integer 
    Public Property listofstuff() As Dictionary(Of String, String)() 
    Public Property lastproperty() As Integer 
End Class 
-1

您需要.NET一個JSON庫:http://json.codeplex.com/

+0

我將如何去使用這個目的?來自作者的 – Cyclone 2011-02-01 23:10:50

+0

(請參閱LINQ to JSON示例)http://james.newtonking.com/pages/json-net.aspx如果您想強類型化您的類,則爲其他選擇:http://msdn.microsoft.com/zh-cn/ -us/library/bb412179.aspx – Sean 2011-02-01 23:22:12