C# 如何更新序列化动态JSON中的元素值
我在.net(C#)中有一个要求,我需要在JSON中发送动态类型的对象,并需要在另一个API中更新它,然后再次将其发送到另一个API进行处理。 我很难将其反序列化为动态类型以更新属性之一 我可以使用“RootElement.GetProperty()”获取值,但无法在JSON中设置任何值 谢谢你的帮助 正在传递给.net核心api的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
{
"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:问题中添加的示例仍然不清楚此处询问的内容。