Abdul Rahman
Abdul Rahman

Reputation: 115

JObject.SelectToken as JObject Newtonsoft.JSON C#

I want to query JObject and again with result again query in recursive way.

So JObject.SelectToken is results the Property. so again Querying the Property is not getting value as it's not a JObject.

So please anyone suggest me a way to acheive this.

Sample Code:

JObject Jobj = JObject.parse(@"{
  ""patient_demog_information"": {
    ""patient_id"": ""2558765"",
    ""patient_name"": {
      ""given_name"": ""29 th june 2018"",
      ""family_name"": ""0016"",
      ""middle_name"": """",
      ""suffix_name"": """",
      ""prefix_name"": """",
      ""degree_name"": """"
    }
  }
}");

So, not directly in step wise i've get middle_name value in patient_name

JToken pat_demog = Jobj.SelectToken("$.patient_demog_information");

JToken pat_name = pat_demog.SelectToken("$.patient_name");

So here I'm getting pat_demog, and by querying it not getting the pat_name because it's a Property not JObject.

Upvotes: 1

Views: 6399

Answers (1)

Kevin Smith
Kevin Smith

Reputation: 14436

I'm not sure fully what you mean but you can keep using SelectToken to keep drilling futher down the tree, for example:

JObject Jobj = JObject.Parse(@"{
  ""patient_demog_information"": {
    ""patient_id"": ""2558765"",
    ""patient_name"": {
      ""given_name"": ""29 th june 2018"",
      ""family_name"": ""0016"",
      ""middle_name"": """",
      ""suffix_name"": """",
      ""prefix_name"": """",
      ""degree_name"": """"
    }
  }
}");

JToken pat_demog = Jobj.SelectToken("$.patient_demog_information");

JToken pat_name = pat_demog.SelectToken("$.patient_name");

JValue family_name = (JValue)pat_name.SelectToken("$.family_name");

Console.WriteLine(family_name.Value);

The above casts to a JValue however we could just cast directly to a string

string value = (string)pat_name.SelectToken("$.family_name");

Console.WriteLine(value);

Upvotes: 2

Related Questions