用 C# 解析 JSON 并获取特定值,最常用、最推荐的方式是使用 Newtonsoft.Json(即 Json.NET)库中的
JObject类。它支持灵活的路径查询、动态属性访问和类型安全转换。
通过属性名直接访问节点
如果 JSON 结构明确且层级较浅,可直接用点号或索引器获取子节点:
jObj["name"]获取顶层字段(返回
JToken)
jObj["user"]["age"].ToString()链式访问嵌套字段
(int)jObj["count"]强制转换为指定类型(会抛异常,建议配合
TryGetValue)
使用 SelectToken 安全提取任意路径值
支持 JSONPath 语法,适合动态路径或存在可选字段的场景:
jObj.SelectToken("$.data.items[0].title") —— 获取数组第一个元素的 title
jObj.SelectToken("user.address?.city") —— 使用空合并操作符(?)避免空引用
返回 null而非异常,适合不确定结构时的安全读取
用 TryGetValue 避免运行时异常
比直接索引更健壮,尤其处理可能缺失的字段:
if (jObj.TryGetValue("status", out JToken statusToken)) { ... }
支持嵌套:先取外层对象 if (jObj.TryGetValue("config", out JToken config) && config is JObject cfg),再查 cfg 内字段
配合 ToObject<t>()</t>可直接映射为自定义类
反序列化为强类型对象(推荐用于固定结构)
比纯 JObject 更安全、易维护,尤其适合业务模型明确的场景:
定义匹配 JSON 字段的 C# 类(属性名一致或加[JsonProperty("api_name")])
var user = JsonConvert.DeserializeObject<user>(jsonString);</user>后续直接用
user.Name、
user.Orders[0].Amount访问,无需字符串键或类型转换
基本上就这些。JObject 适合快速解析和动态场景,强类型反序列化更适合长期维护的业务代码。两者可混合使用——比如先用 JObject 提取关键标识字段,再对某段子 JSON 做强类型解析。
