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

如何将JsonResult对象转换为JObject并修改其属性?

JsonResult转JObject并修改属性的解决方案

方案一:直接从JsonResult对象转换(最优)

JsonResult本身携带了原始的数据源对象(即你传入Json()方法的匿名对象),无需处理非标准字符串,直接通过Value属性获取后转换为JObject是最可靠高效的方式:

// 假设已获取到JsonResult实例,命名为jsonResultObj
JObject jObject = JObject.FromObject(jsonResultObj.Value);

// 修改属性示例
jObject["price"] = "$30.00";
jObject["stockAvailability"] = "In Stock";
// 修改数组类型属性
jObject["enabledattributemappingids"] = JArray.FromObject(new int[] { 5, 6 });

说明

  • 该方案依赖Newtonsoft.Json(Json.NET),ASP.NET项目通常默认已引用,若未引用可通过NuGet安装Newtonsoft.Json包
  • 直接操作原始对象,完全避免了非标准字符串解析的风险,是优先推荐的方案

方案二:处理非标准字符串(仅当无法获取JsonResult实例时使用)

如果只能拿到你提供的非标准字符串,需要先将其转换为合法JSON,再解析为JObject:

string invalidJson = "{ productId = 1, gtin = null, mpn = null, sku = null, price = \"$25.00\", basepricepangv = null, stockAvailability = \"\", enabledattributemappingids = {int[0]}, disabledattributemappingids = {int[0]} }";

// 正则替换:给属性名加双引号,将=替换为:
string validJson = Regex.Replace(invalidJson, @"(\w+)\s*=", "\"$1\":");
// 替换{int[0]}这类数组占位符为合法JSON数组[]
validJson = Regex.Replace(validJson, @"\{int\[\d+\]\}", "[]");

// 解析为JObject并修改属性
JObject jObject = JObject.Parse(validJson);
jObject["message"] = JArray.FromObject(new string[] { "属性已更新" });

说明

  • 正则替换仅针对你提供的字符串格式适配,若字符串格式有其他变化(比如嵌套对象),需要调整正则规则
  • 此方案属于退而求其次的选择,存在格式适配不全的风险

内容的提问来源于stack exchange,提问作者Wasyster

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 18:31:04