I have a JSON string like this:
{ "code": "GENDER", "value": { "option": "ML" } }
I would like to update the option
property to "Male"
if the value is "ML"
and "Female"
if the value is "FM"
.
I have got to this point, but am unsure how to proceed:
JArray contentobject = (JArray)JsonConvert.DeserializeObject(contentJSON); JObject voicgObj = contentobject.Children().FirstOrDefault(ce => ce["code"].ToString() == "GENDER") as JObject; JProperty voicgProp = voicgObj.Property("value");
I don't know how to get to the option
which is a child of value
.
Thanks in advance. Any pointers would be great.
First you would need to convert it to a JavaScript Object. Once it is an Object, then you can just use dot notation into the object to change the values that you want. Lastly, you would convert that JavaScript Object back into a JSON string.
The best way is to parse it, replace the text in the object, and then stringify it. The next best way is to use a regular expression. In this example, I catch exceptions if path cannot be indexed, and use ['type'] instead of . type so it will scale to indexing 'non-type' if you wish.
A JSON object contains zero, one, or more key-value pairs, also called properties. The object is surrounded by curly braces {} . Every key-value pair is separated by a comma. The order of the key-value pair is irrelevant.
Use the Newtonsoft. Json; To build and run the app, press F5 or select Debug > Start Debugging. Select the Click Me button to see the contents of the TextBlock object replaced with JSON text.
You can access the object by using properties as keys:
JObject obj = JObject.Parse(json); string gender = (string)obj["value"]["option"];
For your example, try:
JObject obj = JObject.Parse(json); var val = obj["value"]; string option = (string)val["option"]; if (option == "ML") val["option"] = "Male"; if (option == "FM") val["option"] = "Female"; string result = obj.ToString();
Another way, with minimal property retrieving:
var val = voicgObj["value"] as JObject; JProperty optionProp = val.Property("option"); string option = optionProp.Value.Value<string>(); if (option == "ML") optionProp.Value = "Male"; else if (option == "FM") optionProp.Value = "Female";
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With