it-swarm.com.de

So aktualisieren Sie eine Eigenschaft eines JSON-Objekts mit NewtonSoft

Ich habe einen JSON-String wie folgt:

{
    "code": "GENDER",
    "value": { "option": "ML" }
}

Ich möchte die option-Eigenschaft auf "Male" aktualisieren, wenn der Wert "ML" ist, und "Female", wenn der Wert "FM" ist.

Ich bin an diesem Punkt angelangt, bin mir aber nicht sicher, wie ich vorgehen soll:

JArray contentobject = (JArray)JsonConvert.DeserializeObject(contentJSON);  
JObject voicgObj = contentobject.Children().FirstOrDefault(ce =>   ce["code"].ToString() == "GENDER") as JObject;
JProperty voicgProp = voicgObj.Property("value");

Ich weiß nicht, wie ich zur option komme, die ein Kind von value ist.

Danke im Voraus. Alle Hinweise wären toll.

29
Pipe2Path

Sie können auf das Objekt zugreifen, indem Sie Eigenschaften als Schlüssel verwenden:

JObject obj = JObject.Parse(json);
string gender = (string)obj["value"]["option"];

Versuchen Sie für Ihr Beispiel:

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

Ein anderer Weg, mit minimalem Abruf von Eigenschaften:

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";
0
Кое Кто