【问题标题】:How to dynamically parse only part of the JSON如何仅动态解析部分 JSON
【发布时间】:2021-08-12 20:34:32
【问题描述】:

我有下一个问题:我收到了很多不同格式的 JSON。我只需要处理这些文件的一部分。我尝试使用 Newtonsoft.Json.Schema nuget,但遇到了下一个问题:
JSON how to don't parse additional properties

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

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

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

【问题讨论】:

  • 请为您使用的语言/技术添加标签。
  • @AlexK。完毕。谢谢!
  • 那不是valid JSONValid JSON 使用双引号,而不是单引号。请记住这一点,这样您就不会陷入困境。
  • 另外,您可以反序列化为dynamic
  • var obj = JsonConvert.DeserializeObject<dynamic>(jsonData); var name = (string)obj.name; var age = (int)obj.age;

标签: c# json .net deserialization json-deserialization


【解决方案1】:

如果您的 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");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-14
    • 2014-05-23
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多