简体   繁体   中英

Extract JSON array names C#

I'm trying to deserialize this piece of json here with JSON.NET through an API, and I just want to extract the names that represent each array, which are John, Marie and Bob. Is it possible to extract just the names of each array with a foreach or any kind of method?

Here is how I currently have it:

WebRequest request = WebRequest.Create("...API URL...");
WebResponse response = request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);

string responseFromServer = reader.ReadToEnd();

reader.Close();
response.Close();
var jss = new JavaScriptSerializer();
var dict = jss.Deserialize<Dictionary<string, dynamic>>(responseFromServer);


foreach (var item in dict["data"])
{
   string arrayName= Convert.ToString(item["data"]["?array_names?"]);
   Console.WriteLine(arrayName);
}

Data from JSON (responseFromServer)

 {"data": {
      "John": {
         "id": 266,
         "title": "Good old john",
         "name": "John Shepard",
         "key": "JS"
      },
      "Marie": {
         "id": 412,
         "title": "Helper Marie",
         "name": "Marie Godfather",
         "key": "MG"
      },
      "Bob": {
         "id": 23,
         "title": "Uncle Bob",
         "name": "Bob Plane",
         "key": "BP"
      }
}}

[EDIT: Added missing {} at start and end, sorry]

Thanks in advance

Assuming the valid json format - the follwing produces the result -

var json = "{'data':{'John':{'id':266,'title':'Good old john','name':'John Shepard','key':'JS'},'Marie':{'id':412,'title':'Helper Marie','name':'Marie Godfather','key':'MG'},'Bob':{'id':23,'title':'Uncle Bob','name':'Bob Plane','key':'BP'}}}";
var t = JObject.Parse(json)["data"];
foreach(JProperty j in t){
   Console.WriteLine(j.Name);
} /*John
    Marie
    Bob*/

It is recommended to use JSON.Net for working with json data types.

var json = "{'data':{'John':{'id':266,'title':'Good old john','name':'John Shepard','key':'JS'},'Marie':{'id':412,'title':'Helper Marie','name':'Marie Godfather','key':'MG'},'Bob':{'id':23,'title':'Uncle Bob','name':'Bob Plane','key':'BP'}}}";

var jss = new JavaScriptSerializer();
var dict = jss.Deserialize<Dictionary<string, dynamic>>(json);

foreach (var item in dict["data"])
    {
        string arrayName = Convert.ToString(item.Key);
        Console.WriteLine(arrayName);
    }

// John
// Marie
// Bob

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM