如何在C#中使用LINQ修改JSON或匿名对象的键名
使用LINQ to JSON修改JSON键名
没问题,我来帮你搞定用LINQ修改JSON键名的需求。我们可以借助Newtonsoft.Json(也就是Json.NET)的LINQ to JSON API来轻松实现,具体步骤如下:
1. 先引用必要的命名空间
using Newtonsoft.Json; using Newtonsoft.Json.Linq;
2. 完整的处理代码示例
// 你的原始JSON字符串 string originalJson = @"{""gstin"":""27GSPMH0411G1Z1"",""fp"":""012018"",""gt"":0,""cur_gt"":0,""cdnur"":[{""sply_ty"":""INTER"",""diff_percent"":0.0,""rt"":45.0,""typ"":""OE"",""etin"":"""",""pos"":""24"",""txval"":-13000.0,""iamt"":-10000.0,""csamt"":0.0}]}"; // 将JSON字符串解析为可操作的JObject对象 JObject jsonObj = JObject.Parse(originalJson); // 取出"cdnur"对应的内容(这里是一个JArray) JToken cdnurContent = jsonObj["cdnur"]; // 移除原来的"cdnur"键 jsonObj.Remove("cdnur"); // 添加新的键名(比如替换成"newCdnur"),并把原来的内容赋值过去 jsonObj.Add("newCdnur", cdnurContent); // 转换回格式化后的JSON字符串(带缩进更易读) string modifiedJson = jsonObj.ToString(Formatting.Indented);
3. 代码逻辑说明
- 先通过
JObject.Parse把JSON字符串转成可操作的对象,这是LINQ to JSON的核心操作入口; - 先保存旧键对应的值,再删除旧键,最后用新键名重新添加值——这样就完成了键名的替换;
- 如果你需要替换成其他名称,只需要修改
jsonObj.Add里的第一个参数即可,比如改成"updatedCdnur"或者你想要的任何名称。
4. 修改后的JSON示例(以"newCdnur"为新键名)
{ "gstin": "27GSPMH0411G1Z1", "fp": "012018", "gt": 0, "cur_gt": 0, "newCdnur": [ { "sply_ty": "INTER", "diff_percent": 0.0, "rt": 45.0, "typ": "OE", "etin": "", "pos": "24", "txval": -13000.0, "iamt": -10000.0, "csamt": 0.0 } ] }
如果你的项目还没安装Newtonsoft.Json,可以通过NuGet安装:在NuGet包管理器里搜索Newtonsoft.Json安装,或者用命令行:
- .NET Framework:
Install-Package Newtonsoft.Json - .NET Core/.NET 5+:
dotnet add package Newtonsoft.Json
内容的提问来源于stack exchange,提问作者Wit Wikky
相关产品推荐
相关产品推荐

