无需创建模型类,如何用Newtonsoft获取复杂JSON指定字段值?
无需模型类从JSON中获取指定值的方法
当然可以直接获取content.result.id的值,用Newtonsoft.Json(Json.NET)无需创建模型类的话,有两种常用的简洁方式:
方法一:通过JObject逐层访问
先将JSON字符串解析为JObject,然后按层级依次访问属性:
using Newtonsoft.Json.Linq; string jsonStr = "你的JSON字符串"; JObject jsonObj = JObject.Parse(jsonStr); // 逐层获取目标值 string targetId = jsonObj["content"]["result"]["id"].ToString(); // 此时targetId的值就是"1111"
如果担心JSON结构变动导致空引用,可以添加空判断:
string targetId = jsonObj?["content"]?["result"]?["id"]?.ToString() ?? "默认值";
方法二:使用JsonPath表达式直接查询
如果需要更灵活的节点定位,可借助JsonPath语法,通过SelectToken方法直接定位目标:
using Newtonsoft.Json.Linq; string jsonStr = "你的JSON字符串"; JObject jsonObj = JObject.Parse(jsonStr); // 用精确JsonPath路径获取节点 JToken token = jsonObj.SelectToken("$.content.result.id"); string targetId = token?.ToString() ?? "默认值";
$.content.result.id是精确匹配的路径,也可以用$..content.result.id做模糊层级匹配,但精确路径的查询效率更高。
两种方法都无需创建任何模型类,完全动态处理JSON结构,适配多模型、结构易变的场景。
内容的提问来源于stack exchange,提问作者Vicky
相关产品推荐
相关产品推荐

