首页 > 解决方案 > 如何仅动态解析部分 JSON

问题描述

我有下一个问题:我收到了很多不同格式的 JSON。我只需要处理这些文件的一部分。我尝试使用 Newtonsoft.Json.Schema nuget,但遇到了下一个问题:
JSON 如何不解析附加属性

当我们不知道这个 json 的结构时,你能建议我一些方法来解析 JSON 文档的一部分吗?我们可以存储文档的一些模式。

示例:
我们有下一个 JSON 文档。
而这里我们需要处理,例如,只有nameage属性。而且我只会在运行时知道这些属性。

{
   'name': 'James',
   'age': 29,
   'salary': 9000.01,
   'jobTitle': 'Junior Vice President'
}

标签: c#json.netdeserializationjson-deserialization

解决方案


如果您的 json 不包含嵌套字段,因此每个顶级字段都是原始类型(不是对象),那么您可以Dictionary<string, object>像这样反序列化它:

var fieldValueMap = JsonConvert.DeserializeObject<Dictionary<string, object>>(json);

string fieldName = "name";
Console.WriteLine(fieldValueMap.ContainsKey(fieldName) 
     ? fieldValueMap[fieldName] 
     : "There is no such field");

推荐阅读