测试人社区

【JSON】如何校验JSON数据中的字段(数据量大)

需求:

如图所示的json数据,我需要校验其中每个字典中某些字段的值和预期一致,数据量10W左右,有没有能快速且节约内存的方式呢?

我自己想了两个方法:

方法一:

通过jsonpath提取出需要校验的字段,然后遍历判断。

方法二:

class Validated:
    __slots__ = ['happenTime', 'type', 'appName']

    def __init__(self, json_data):
        for k, v in json_data.items():
            if k in self.__slots__:
                setattr(self, k, v)

    def is_validated(self,expr):
        pass

将json数据中的每个字典实例为对象,将需要校验的字段作为实例属性,并设置slot 节约内存,再定义个一个is_validated方法去做校验。

想请教下,上述两个方法来校验大量json数据合适吗,或者有更好的方法吗?感谢~

jsonpath不适合大数据量。最好是自己写逻辑实现。无论是分段读取,还是逻辑验证处理,都是比较方便的。

jsonpath为啥不适合大数据量呢?
还有老师我第二个方法的处理方式合适么

我们做过内测,jsonpath的性能不太行。你自己写的话,现在的方法不够灵活,需要自己做个更灵活易用的解析逻辑才行。我也在考虑如何重写个更好用的。

如果你是两个json对比值的话,可以用josn diff 的方式