2

I have a json array which is formatted as follows:

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

How can I deserialize this in such a way that I can have a list of objects indexed by property? Meaning, I want to be able to access the data like this: MyList(96).lastproperty or MyList(96).listofstuff.yetanother and have it return the proper datatype too? Is that even possible in vb.net?

1
  • I had actually tried parsing it with regex originally, which in hindsight does not seem like the smartest way to go... Commented Feb 1, 2011 at 22:53

2 Answers 2

2

I agree that the JSON library you need to use is Json.NET found at http://json.codeplex.com/

So, given your example JSON array, I made the following classes that can be used for serializing and deserializing:

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

Then all you need is the following code to be able to access the data in roughly the way you wanted to:

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

If your intent with the listofstuff property array was to store any string pair then use this definition for Item (and you also won't need the Stuff class):

Public Class Item
    Public Property [property]() As Integer
    Public Property listofstuff() As Dictionary(Of String, String)()
    Public Property lastproperty() As Integer
End Class
Sign up to request clarification or add additional context in comments.

3 Comments

Items.ToDictionary does not seem to exist?
Also if this code works as simply as it seems it will, then you've just saved me several hours of debugging ugly regexes.
Scratch that. I forgot a parenthesis.
-1

You need a JSON library for .net: http://json.codeplex.com/

2 Comments

And how would i go about using that for this purpose?
from the author (see the LINQ to JSON example) james.newtonking.com/pages/json-net.aspx Alternative if you want to strongly type you classes: msdn.microsoft.com/en-us/library/bb412179.aspx

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.