V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Humbert
V2EX  ›  程序员

一个用于在 Python Web 服务中检查传入 JSON 数据的小工具

  •  1
     
  •   Humbert ·
    humbertzhang · 2018-02-24 11:37:18 +08:00 · 2573 次点击
    这是一个创建于 2499 天前的主题,其中的信息可能已经有所发展或是发生改变。

    维护之前的代码时发现,Python 中没有类型检查 json 数据很容易传错,所以写了一个检查 JSON 的东西...不知道是不是重复造轮子...

    • 检查 JSON key 数目
    • 检查 JSON key 名字
    • 检查 JSON 的 value 的 type,若为 dict, 则递归地检查它.

    github -> https://github.com/Humbertzhang/jsoncensor

    pip install jsoncensor
    from jsoncensor import JsonCensor
    standard = {"test":"test"}
    suspect = {"tes":"test"}
    jc = JsonCensor(standard, suspect)
    ret = jc.check()
    if ret['statu'] != True:
    	print(ret)
    
    # 输出
    # {'statu': False, 'error': 'KeyNameError', 'error_item': 'tes', 'should_be': 'test'}
    
    

    求 star ฅʕ•̫͡•ʔฅ

    5 条回复    2018-02-24 20:22:30 +08:00
    Kilerd
        1
    Kilerd  
       2018-02-24 12:49:05 +08:00
    这种 validation 不是检测结构是否一致,value 的 类型是否一致。

    再强一点的,允许传入 value 的期望 type。

    像你这种写定值的通用型不高把?
    huahuajun9527
        2
    huahuajun9527  
       2018-02-24 14:14:03 +08:00
    jsonschema ?
    python 轮子 https://github.com/Julian/jsonschema
    lolizeppelin
        3
    lolizeppelin  
       2018-02-24 17:16:25 +08:00 via Android
    重复造轮子了 有成熟的库 而且有通用的校验结构
    lolizeppelin
        4
    lolizeppelin  
       2018-02-24 17:18:09 +08:00 via Android
    对就是 jsonschema
    tairan2006
        5
    tairan2006  
       2018-02-24 20:22:30 +08:00
    这个肯定有成熟库的…楼主没有认真搜
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   986 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 19:53 · PVG 03:53 · LAX 11:53 · JFK 14:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.