EDIT: I figured out how to get each key, now the problem is looping through each collection. Solution at bottom!
I'm trying to parse a JSON payload that has the following format:
{
"version": "1.1",
"0": {
"artist": "Artist 1",
"title": "Title 1"
},
"1": {
"artist": "Artist 2",
"title": "Title 2"
},
...
"29": {
"artist": "Artist 30",
"title": "Title 30"
}
}
I don't need the version
key, so I'm ignoring it while coding my classes. This is what I have so far:
public class Song
{
public string artist { get; set; }
public string title { get; set; }
}
I've checked around StackOverflow and I've seen people using Dictionary<int, string>
for similar problems, but it doesn't look like people have each JSON object in the root. I'm using JSON.net to parse everything.
In PHP, I could easily use json_decode()
and walk through the array and extract all the info I need, but I'm stumped by C#.
EDIT: Solution begins below.
I looked at the JSON.net documentation and they used dictionaries, so I tried using nested dictionaries, and it seems to work!
Dictionary<int, Dictionary<string, string>> song = JsonConvert.DeserializeObject<Dictionary<int, Dictionary<string, string>>>(json);
And I can access the artist
and title
properties via:
song[0]["artist"]
song[0]["title"]
respectively.
This eliminates the need for pre-built classes. Now I'm having trouble looping through each set of data collection (e.g. artist and title info for song[1], song[2], song[3], ..., song[n]).
See Question&Answers more detail:
os