C#中如何处理半结构化的JSON数据

居銮

在 C# 中处理半结构化 JSON 数据的最佳方法是什么?如果您有嵌套对象并且最终将返回 null,您将如何处理?您将如何处理意外的嵌套空对象?编写多个 if 语句只是为了检查它是否为空是很麻烦的,因为嵌套对象可以是“N”个数量。使用 3rd 方 API,您不能总是期望它们返回结构化数据集。

例子:

[{
    "ID": 0
    , "WeatherName": "Rain"
    , "Location": "San Francisco"
    , "Details": null
},{
    "ID": 1
    , "WeatherName": "Snow"
    , "Location": "New York"
    , "Details": {
        "Population": 1234567
      , "Traffic": null
    }
},{
    "ID": 2
    , "WeatherName": "Fire"
    , "Location": "Sacramento"
    , "Details": {
        "Population": 1234567
       ,"Traffic": {
            "Accidents": 10
           ,"Death": 10
        }
    }
}]

在这种情况下,我必须编写一个 if 语句来检查父对象是否为空,然后编写另一个 if 语句来检查子对象是否为空,然后再编写一个 if 语句来检查另一个子对象是否为空。如您所见,编写多个 if 语句来检查 null 可能会很痛苦。

卡莱西

对我来说,这看起来不像是非结构化数据集。某些属性为 null 的可能性是可以管理的(而且太常见了),这与在同一个数组中拥有不同类型的对象而没有任何重叠属性的情况相反!

尝试像这样为您的响应建模(使用此工具完成):

    public class Traffic {
        public int Accidents { get; set; } 
        public int Death { get; set; } 
    }

    public class Details {
        public int Population { get; set; } 
        public Traffic Traffic { get; set; } 
    }

    public class Response {
        public int ID { get; set; } 
        public string WeatherName { get; set; } 
        public string Location { get; set; } 
        public Details Details { get; set; } 
    }

然后,要解析(使用 Newtonsoft.JSON)并以安全的方式访问一些可能为 null 的属性(为了更安全而编辑,kudos @mjwills):

var response = JsonConvert.DeserializeObject<Response[]>(myJsonString);
int? maybePopulation = response.FirstOrDefault()?.Details?.Population; // either int, or null

换句话说,要处理必须检查 null 并避免编写 null 检查的问题,请使用null-conditional operator

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

即使从不同的文件格式加载,Vertica如何处理半结构化数据

状态数据不断增长时,Spark结构化流如何处理内存中状态?

如何在Angular 6中使用ng-for处理JSON非结构化数据

解析半结构化json数据(Python / R)

如何处理Google结构化数据测试工具的无评论

Spark结构化流如何处理背压?

ASP C#中的结构化数据JSON ld

如何处理Spark结构化流中的小文件问题?

如何从C ++结构化数组中清除数据?

使用结构化流处理来自 kafka 的 json 数据

处理R中的非结构化数据

分布式存储系统中什么是结构化非结构化和半结构化数据

如何在 Marshmallow 中反序列化不同的结构化 JSON 数据?

如何在python中处理结构化语言文件

使用 talend BigData 将半结构化数据转换为结构化数据

Spark结构化流作业如何处理流-静态DataFrame连接?

如何处理从Kafka到Cassandra的pySpark结构化流

Python - 解析半结构化文本并提取到结构化数据

结构化流如何动态解析kafka的json数据

半结构化数据上的雪花条件类型

R导入半非结构化数据CSV

UIMA,从文本中提取半结构化(表格)数据

如何在Angular 6中过滤复杂的结构化Json数据

如何使用jQuery解析JSON数组中的结构化数据?

如何在 Pandas 列中以 JSON 格式提取数据并通过堆叠对其进行结构化?

如何在Terraform中创建非结构化数据

如何从循环结构化数据中读取属性

在C ++中创建结构化(偶数)空间以显示数据

如何解析结构化流中的JSON记录?