C#如何从SOAP获取的JSON属性中提取指定字段值生成新字符串
C#从JSON字符串属性提取指定节点值实现方案
你不需要手写正则匹配JSON内容,直接用成熟的JSON解析库即可稳定实现取值,以下提供两种常用实现路径:
方案1:使用 Newtonsoft.Json(Json.NET)
这是C#生态兼容性最好的第三方JSON库,适配.NET Framework全版本、.NET Core/.NET 5+全版本,使用前需确保项目已安装Newtonsoft.JsonNuGet包。- 引入命名空间
using Newtonsoft.Json.Linq;- 核心取值与生成新字符串代码
// 此处entity为你持有Lisainfo属性的实体类实例 JObject lisainfo = JObject.Parse(entity.Lisainfo); // 按层级提取Lehekylg节点下的JrnNr数值 int jrnNr = lisainfo["Lehekylg"]?["JrnNr"]?.Value<int>() ?? 0; // 基于提取值生成目标新字符串,可按需调整拼接格式 string newGeneratedStr = $"当前提取到的JrnNr编号为{jrnNr}";代码中加了空传播判断,即使节点不存在也不会抛出空引用异常,默认返回0,可按需调整默认值。
方案2:使用 System.Text.Json
这是.NET Core 3.0、.NET 5及以上版本自带的官方JSON解析库,无需额外安装第三方依赖。- 引入命名空间
using System.Text.Json.Nodes;- 核心取值与生成新字符串代码
// 此处entity为你持有Lisainfo属性的实体类实例 JsonNode lisainfo = JsonNode.Parse(entity.Lisainfo); // 按层级提取Lehekylg节点下的JrnNr数值 int jrnNr = lisainfo["Lehekylg"]?["JrnNr"]?.GetValue<int>() ?? 0; // 基于提取值生成目标新字符串,可按需调整拼接格式 string newGeneratedStr = $"当前提取到的JrnNr编号为{jrnNr}";
注意:JSON结构存在格式变动的可能性,不要用字符串截取、正则硬匹配的方式取值,很容易因为空格、换行、属性顺序调整出现取值失败的问题,用结构化解析库是生产环境的稳妥选择。
内容的提问来源于stack exchange,提问作者chivas
相关产品推荐
相关产品推荐

