Parsing a JSON array using Json.Net

C#asp.netJsonjson.net

C# Problem Overview


I'm working with Json.Net to parse an array. What I'm trying to do is to pull the name/value pairs out of the array and assign them to specific variables while parsing the JObject.

Here's what I've got in the array:

[  {    "General": "At this time we do not have any frequent support requests."  },  {    "Support": "For support inquires, please see our support page."  }]

And here's what I've got in the C#:

WebRequest objRequest = HttpWebRequest.Create(dest);
WebResponse objResponse = objRequest.GetResponse();
using (StreamReader reader = new StreamReader(objResponse.GetResponseStream()))
{
    string json = reader.ReadToEnd();
    JArray a = JArray.Parse(json);

    //Here's where I'm stumped

}

I'm fairly new to JSON and Json.Net, so it might be a basic solution for someone else. I basically just need to assign the name/value pairs in a foreach loop so that I can output the data on the front-end. Has anyone done this before?

C# Solutions


Solution 1 - C#

You can get at the data values like this:

string json = @"
[ 
	{ ""General"" : ""At this time we do not have any frequent support requests."" },
	{ ""Support"" : ""For support inquires, please see our support page."" }
]";

JArray a = JArray.Parse(json);

foreach (JObject o in a.Children<JObject>())
{
	foreach (JProperty p in o.Properties())
	{
		string name = p.Name;
		string value = (string)p.Value;
		Console.WriteLine(name + " -- " + value);
	}
}

Fiddle: https://dotnetfiddle.net/uox4Vt

Solution 2 - C#

Use Manatee.Json https://github.com/gregsdennis/Manatee.Json/wiki/Usage

And you can convert the entire object to a string, filename.json is expected to be located in documents folder.

        var text = File.ReadAllText("filename.json");
        var json = JsonValue.Parse(text);

        while (JsonValue.Null != null)
        {
            Console.WriteLine(json.ToString());

        }
        Console.ReadLine();

Solution 3 - C#

I know this is about Json.NET but times are a-changing so if anybody stumbles here while using .NET Core/5+ System.Text.Json please don't despair because Try the new System.Text.Json APIs from .NET Blog show an example of this.

> >[ > { > "date": "2013-01-07T00:00:00Z", > "temp": 23, > }, > { > "date": "2013-01-08T00:00:00Z", > "temp": 28, > }, > { > "date": "2013-01-14T00:00:00Z", > "temp": 8, > }, >] > > >... > > using (JsonDocument document = JsonDocument.Parse(json, options)) > { > int sumOfAllTemperatures = 0; > int count = 0; > > foreach (JsonElement element in document.RootElement.EnumerateArray()) > { > DateTimeOffset date = element.GetProperty("date").GetDateTimeOffset(); > (...) >

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionjohngeekView Question on Stackoverflow
Solution 1 - C#Brian RogersView Answer on Stackoverflow
Solution 2 - C#SDALView Answer on Stackoverflow
Solution 3 - C#tymtamView Answer on Stackoverflow