C# 如何更新序列化动态JSON中的元素值

C# 如何更新序列化动态JSON中的元素值,c#,json,.net,serialization,json-deserialization,C#,Json,.net,Serialization,Json Deserialization,我在.net(C#)中有一个要求,我需要在JSON中发送动态类型的对象,并需要在另一个API中更新它,然后再次将其发送到另一个API进行处理。 我很难将其反序列化为动态类型以更新属性之一 我可以使用“RootElement.GetProperty()”获取值,但无法在JSON中设置任何值 谢谢你的帮助 正在传递给.net核心api的JSON结构示例: { "TaskId": "24332", "Code": "Sam

我在.net(C#)中有一个要求,我需要在JSON中发送动态类型的对象,并需要在另一个API中更新它,然后再次将其发送到另一个API进行处理。 我很难将其反序列化为动态类型以更新属性之一

我可以使用“RootElement.GetProperty()”获取值,但无法在JSON中设置任何值

谢谢你的帮助

正在传递给.net核心api的JSON结构示例:

 {
  "TaskId": "24332",
  "Code": "Sample_code",
      "Type": 1,
      "Name": "New Product",
      "Params": {
        "Year": "2020",
    "Filter": "LTH"
    }
} 
使用
ExpandoObject
您可以尝试使用
ExpandoObject
。通过这种方式,您可以在扩展对象上添加/编辑属性,然后再次序列化并拥有扩展的json对象

var obj = JsonConvert.DeserializeObject<ExpandoObject>(jsonText, new ExpandoObjectConverter());
var obj=JsonConvert.DeserializeObject(jsonText,new ExpandoObjectConverter());

表示可以在运行时动态添加和删除其成员的对象

使用
Json.Text
我猜这就是你的方法。检查解决方案。

使用
ExpandoObject
您可以尝试使用
ExpandoObject
。通过这种方式,您可以在扩展对象上添加/编辑属性,然后再次序列化并拥有扩展的json对象

var obj = JsonConvert.DeserializeObject<ExpandoObject>(jsonText, new ExpandoObjectConverter());
var obj=JsonConvert.DeserializeObject(jsonText,new ExpandoObjectConverter());

表示可以在运行时动态添加和删除其成员的对象

使用
Json.Text

我猜这就是你的方法。检查解决方案。

我建议使用Newtonsoft的原生对象JObject、JArray或JToken

例如,在您的情况下,如果要修改Params属性,只需访问对象并添加/编辑属性:

string json = @"{'TaskId':'24332','Code':'Sample_code','Type':1,'Name':'New Product','Params':{'Year':'2020','Filter':'LTH'}}";

JObject jObject = JsonConvert.DeserializeObject<JObject>(json);

if (jObject["Params"] is JObject p) {
    p.Add("ProductType", "Battery");
}

string newJson = JsonConvert.SerializeObject(jObject);
string json=@“{'TaskId':'24332','code':'Sample_code','Type':1,'Name':'New Product','Params':{'Year':'2020','Filter':'LTH'}”;
JObject JObject=JsonConvert.DeserializeObject(json);
如果(作业对象[“参数”]是作业对象p){
p、 添加(“产品类型”、“电池”);
}
字符串newJson=JsonConvert.SerializeObject(jObject);

我建议使用Newtonsoft的原生对象JObject、JArray或JToken

例如,在您的情况下,如果要修改Params属性,只需访问对象并添加/编辑属性:

string json = @"{'TaskId':'24332','Code':'Sample_code','Type':1,'Name':'New Product','Params':{'Year':'2020','Filter':'LTH'}}";

JObject jObject = JsonConvert.DeserializeObject<JObject>(json);

if (jObject["Params"] is JObject p) {
    p.Add("ProductType", "Battery");
}

string newJson = JsonConvert.SerializeObject(jObject);
string json=@“{'TaskId':'24332','code':'Sample_code','Type':1,'Name':'New Product','Params':{'Year':'2020','Filter':'LTH'}”;
JObject JObject=JsonConvert.DeserializeObject(json);
如果(作业对象[“参数”]是作业对象p){
p、 添加(“产品类型”、“电池”);
}
字符串newJson=JsonConvert.SerializeObject(jObject);

任何json示例都很容易帮助您。@Sreenath:问题中添加的示例仍然不清楚此处询问的内容。任何json示例都很容易帮助您。@Sreenath:问题中添加的示例仍然不清楚此处询问的内容。