在C#中为非根JSON对象添加属性的方法咨询
在C#中为非根JSON对象添加属性的实现步骤
嗨,既然你已经能成功访问到Values这个子JSON对象了,那接下来添加新属性就非常简单啦!下面我分两种C#里最常用的JSON处理库,给你具体说操作步骤:
1. 使用Newtonsoft.Json(Json.NET)
这是很多.NET项目里常用的第三方JSON库,如果你已经把原JSON解析成了JObject类型,直接给Values子对象加键值对就行:
// 假设你已经通过解析得到了根JObject实例rootObj JObject valuesObj = (JObject)rootObj["Values"]; // 直接添加新的键值对——如果键不存在就会自动新增,存在则覆盖 valuesObj["valueName4"] = "value4"; // 要是需要把修改后的对象转回JSON字符串,直接调用ToString()就行 string updatedJson = rootObj.ToString();
2. 使用.NET内置的System.Text.Json
如果你用的是.NET Core 3.0+或者.NET 5+,可以直接用官方内置的System.Text.Json,这里分两种场景:
场景A:用JsonNode(.NET 6+支持,灵活处理动态JSON)
// 假设你已经解析得到根JsonNode实例rootNode JsonObject valuesObj = (JsonObject)rootNode["Values"]; // 添加新属性,注意要用JsonValue.Create包装值 valuesObj["valueName4"] = JsonValue.Create("value4"); // 转回JSON字符串 string updatedJson = rootNode.ToJsonString();
场景B:用强类型对象(如果有对应的实体类)
要是你已经定义了和JSON结构匹配的实体类,操作起来更直观:
// 先定义对应的实体类 public class RootObject { public string isFile { get; set; } public ValuesObject Values { get; set; } } public class ValuesObject { public string valueName1 { get; set; } public string valueName2 { get; set; } public string valueName3 { get; set; } // 新增对应的属性 public string valueName4 { get; set; } }
然后反序列化后直接赋值:
// 假设originalJson是原JSON字符串 RootObject root = JsonSerializer.Deserialize<RootObject>(originalJson); // 直接给Values的新属性赋值 root.Values.valueName4 = "value4"; // 序列化回JSON字符串 string updatedJson = JsonSerializer.Serialize(root);
要是不想修改实体类,还可以用ExpandoObject来处理动态对象:
dynamic root = JsonSerializer.Deserialize<ExpandoObject>(originalJson, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); root.Values.valueName4 = "value4"; string updatedJson = JsonSerializer.Serialize(root);
不管用哪种方式,核心逻辑都是:拿到Values对应的可写JSON对象,直接添加键值对即可。
内容的提问来源于stack exchange,提问作者Evan Park
相关产品推荐
相关产品推荐

