【发布时间】:2018-10-02 17:57:57
【问题描述】:
我有一个非常大的 json 可以读取并存储到数据库中。我正在使用 gson 使用流和对象的混合模式。如果文件格式正确,它就像一个魅力。但如果对象中的格式不正确,则会跳过整个文件并出现异常(reader.hasNext() 抛出异常)。
有没有办法跳过特定的坏记录并继续读取文件的其余部分?
示例 json 文件结构 - [{ “一”:1, “乙”:2, “C”:3 }] 假设这个对象中缺少逗号或冒号。
另一个例子是如果有多个对象并且在 }(no comma){ 2 个对象之间缺少逗号。
【问题讨论】:
-
生产者有责任提供有效的 JSON。消费者有责任只允许有效的 JSON。尝试处理格式错误的数据是不安全的。
-
@Compass 我明白这一点,但有可能某些数据的 json 格式不正确,这会导致所有记录的执行停止。
-
如果格式不正确,则不应处理它。通过尝试处理损坏或不正确的数据,您需要对基于您对该数据可能不正确的解释而发生的任何错误负责,而不是去源头并要求他们修复数据。
-
嗯,你是对的,但我只有一个选择,就是跳过那些坏数据并继续下一条记录。
-
你永远不应该在没有给出大小的情况下说“真的很大”。对于物理学家来说,“非常长的时间”可能意味着飞秒。