Utpal
Utpal

Reputation: 807

Parsing JSON data and read its properties value

I want to parse a JSON data dynamically and read its key and their values without serializing it in a concrete class because the JSON data can be different time to time. But for the initial testing one sample data is like this . In this data I want to get property values and if the JSON data aslo contains complex structure I also want to read child property values also How to do that in C#.

{"id":4877891717,"email":"[email protected]","accepts_marketing":true,"created_at":"2017-03-24T08:39:56+01:00","updated_at":"2017-04-10T09:40:42+02:00","first_name":"Robin","last_name":"Van Persie","orders_count":8,"state":"disabled","total_spent":"2320.00","last_order_id":4434634693,"note":"","verified_email":true,"multipass_identifier":null,"tax_exempt":true,"phone":"+3225551212","tags":"","last_order_name":"#1116","addresses":[{"id":5143111941,"first_name":"Robin","last_name":"Van Persie","company":"InSync","address1":"CB 28, El Solo Road","address2":"CB 28, El Solo Road","city":"Brussels","province":"EU","country":"Belgium","zip":"123456","phone":"12345678","name":"Robin Van Persie","province_code":null,"country_code":"BE","country_name":"Belgium","default":true}],"default_address":{"id":5143111941,"first_name":"Robin","last_name":"Van Persie","company":"InSync","address1":"CB 28, El Solo Road","address2":"CB 28, El Solo Road","city":"Brussels","province":"EU","country":"Belgium","zip":"123456","phone":"12345678","name":"Robin Van Persie","province_code":null,"country_code":"BE","country_name":"Belgium","default":true}}

I am trying this way. But after geiing tiken what I will do.

 foreach (JObject token in jObject.Children())
            {}

Thanks

Upvotes: 1

Views: 13520

Answers (3)

Sanjay Dwivedi
Sanjay Dwivedi

Reputation: 749

You can use NewtonsoftJson library to parse without creating concrete class

dynamic parseJson = JsonConvert.DeserializeObject("your json");

and get the value using below code like...

string Id=parseJson.Id.Value

I have tested it and it's working for me

Upvotes: 5

Znaneswar
Znaneswar

Reputation: 3387

You can use NewtonsoftJson library to parse data easily

 dynamic x = Newtonsoft.Json.JsonConvert.DeserializeObject(Jsondata);
   foreach (var product in x) {
         Messagebox.show(product.data.ToString());
       }

Upvotes: 1

Mohammad
Mohammad

Reputation: 2764

you have two options(as far as i know). you can generate a class acording to your json string then parse the result in it. like this:

public class Address
{
    public long id { get; set; }
    public string first_name { get; set; }
    public string last_name { get; set; }
    public string company { get; set; }
    public string address1 { get; set; }
    public string address2 { get; set; }
    public string city { get; set; }
    public string province { get; set; }
    public string country { get; set; }
    public string zip { get; set; }
    public string phone { get; set; }
    public string name { get; set; }
    public object province_code { get; set; }
    public string country_code { get; set; }
    public string country_name { get; set; }
    public bool @default { get; set; }
}

public class DefaultAddress
{
    public long id { get; set; }
    public string first_name { get; set; }
    public string last_name { get; set; }
    public string company { get; set; }
    public string address1 { get; set; }
    public string address2 { get; set; }
    public string city { get; set; }
    public string province { get; set; }
    public string country { get; set; }
    public string zip { get; set; }
    public string phone { get; set; }
    public string name { get; set; }
    public object province_code { get; set; }
    public string country_code { get; set; }
    public string country_name { get; set; }
    public bool @default { get; set; }
}

public class RootObject
{
    public long id { get; set; }
    public string email { get; set; }
    public bool accepts_marketing { get; set; }
    public string created_at { get; set; }
    public string updated_at { get; set; }
    public string first_name { get; set; }
    public string last_name { get; set; }
    public int orders_count { get; set; }
    public string state { get; set; }
    public string total_spent { get; set; }
    public long last_order_id { get; set; }
    public string note { get; set; }
    public bool verified_email { get; set; }
    public object multipass_identifier { get; set; }
    public bool tax_exempt { get; set; }
    public string phone { get; set; }
    public string tags { get; set; }
    public string last_order_name { get; set; }
    public List<Address> addresses { get; set; }
    public DefaultAddress default_address { get; set; }
}

then parse it(using json.net) like this:

var jObject=JsonConvert.DeserializeObject<RootObject>(responseString);

or you can use dynamic object and deal with json result at runtime. like this:

var jObject=JsonConvert.DeserializeObject(responseString);
foreach (JObject token in jObject.Children)

Upvotes: 1

Related Questions