Question

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.

Was it helpful?

Solution

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();

OTHER TIPS

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";
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top