karlo
karlo

Reputation: 11

Retrieve specific value from JSON in C#

I need to get values from the JSON below, for example how to index Id in Info?

The whole JSON consists of many matches, this just one with Id 5aa891cd1e1422452e8b4567, and this is a structure of one match.

I try with:

var jsonDATA = JObject.Parse(data);

foreach (var e in jsonDATA["events"]) {
    //in this step, the result is JSON below
    var id = e["info"]["id"];` // error: cannot access child value on newtonsoft json linq jproperty
}

Any ideas?

{"5aa891cd1e1422452e8b4567": {
      "info": {
        "id": "5aa891cd1e1422452e8b4567",
        "event_id": "58911142245284567",
        "name": "Santos Laguna vs Queretaro",
        "sport": "Soccer",
        "league": "Mexico Cup",
        "period": "Finished",
        "score": "1:0",
        "status": "Live",
        "start_time": "2018.03.14 03:06:53",
        "state": 1017,
        "state_name": "Fulltime",
        "minute": 90,
        "safe": false,
        "safe2": false,
        "blocked": false,
        "stop": false
      },
      "stats": {
        "home": {
          "name": "Santos Laguna",
          "color": "",
          "position": "",
          "on_target": "",
          "off_target": "",
          "attacks": "",
          "dangerous_attacks": "",
          "possession": "",
          "goals": 1,
          "corners": 5,
          "yellowcards": 1,
          "redcards": 0,
          "throwins": 0,
          "freekicks": 0,
          "goalkicks": 0,
          "penalties": 0,
          "substitutions": 3,
          "ht_result": 1
        },
        "away": {
          "name": "Queretaro",
          "color": "",
          "position": "",
          "on_target": "",
          "off_target": "",
          "attacks": "",
          "dangerous_attacks": "",
          "possession": "",
          "goals": 0,
          "corners": 8,
          "yellowcards": 3,
          "redcards": 1,
          "throwins": 0,
          "freekicks": 0,
          "goalkicks": 0,
          "penalties": 0,
          "substitutions": 3,
          "ht_result": 0
        }
      },
      "odds": []
    }}

Upvotes: 1

Views: 121

Answers (1)

Mahender Kvs
Mahender Kvs

Reputation: 174

You can use anonymous type deserialization for your data like this. Hope it works.

//using Newtonsoft.Json;
var jsonData = JsonConvert.DeserializeAnonymousType(
    data,
    new 
    {
      events = new[]
      {
        new
        { 
          Id = new { info = "", stats = "", away = "", odds = "" }
        }
      }
  );            

foreach(var item in jsonData.events)
{
    var id=item.info.id; // getting id present in info
}

Upvotes: 2

Related Questions