You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:12:56