C#怎么获取JSON中的特定值 C# JObject解析JSON节点方法

来源:这里教程网 时间:2026-02-21 17:40:03 作者:

用 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 做强类型解析。

相关推荐