.NET 6中使用System.Text.Json.Nodes获取JsonObject属性名的方法
获取System.Text.Json.Nodes.JsonObject的属性名
直接访问Keys属性
因为JsonObject实现了IDictionary<string, JsonNode?>接口,所以可以直接通过Keys属性拿到所有属性名:
foreach (string propertyName in obj.Keys) { Console.WriteLine(propertyName); // 依次输出property1、property2 }
遍历键值对(同时获取属性名和值)
如果需要同时拿到属性名和对应的值,可以直接遍历JsonObject的键值对集合:
foreach (KeyValuePair<string, JsonNode?> kvp in obj) { Console.WriteLine($"属性名:{kvp.Key},对应值:{kvp.Value?.ToString()}"); }
替代方案:使用JsonDocument(只读场景更高效)
如果只是读取属性名,不需要修改JSON结构,推荐用JsonDocument——它是只读模型,内存占用更低、性能更优,尤其适合处理大JSON:
using JsonDocument doc = JsonDocument.Parse(requestBody); JsonElement rootElement = doc.RootElement; foreach (JsonProperty prop in rootElement.EnumerateObject()) { Console.WriteLine(prop.Name); // 获取属性名 // 如需获取对应值:prop.Value }
两者的核心区别:
JsonObject是可变DOM模型,支持添加、修改、删除属性,适合需要操作JSON结构的场景;JsonDocument是高性能只读模型,适合仅读取数据的场景。
内容的提问来源于stack exchange,提问作者Andres Camacho
相关产品推荐
相关产品推荐

