位置: 编程技术 - 正文

JSONLINT:python的json数据验证库实例解析

编辑:rootadmin

推荐整理分享JSONLINT:python的json数据验证库实例解析,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写。

JSON 函数

使用 JSON 函数需要导入 json 库:import json。

函数 描述 json.dumps 将 Python 对象编码成 JSON 字符串 json.loads 将已编码的 JSON 字符串解码为 Python 对象

随着前后端分离和 REST APIs 的火热,开发者不断寻找着一种灵活的、优雅的方式验证 json 数据。有直接手动获取数据验证的,也有使用 json scheme 验证的。前者容易使得函数变得冗长,还可能存在不少重复的验证;后者验证又不灵活。

本文介绍的 jsonlint 启发自 python 的表单验证工具 wtforms,wtforms 通过继承 Form 类也能进行 json 数据验证,但是 wtforms 对于 json 的数组(Array)类型处理有着很诡异的行为,需要通过 a-1 、 a-2 这样来传递数组数据,常常不能有效的处理数组数据。 jsonlint 大部分代码来着 wtforms,可以视为 wtforms 的一个分支。但 jsonlint 删去了 wtforms 的表单渲染部分,更改了传入的数据格式,最重要的是使用正确的逻辑验证数组(Array)和对象(Object)类型。下面是一些例子:

基本的字符串类型json验证

对于基本的字符串类型,我们只需要创建一个 Json 的子类,填写对应的 Field 即可。使用方式和 wtforms 类型:

更灵活的验证 json 数据

jsonlint 继承了 wtforms 的优点,可以进行一些更灵活的自定义json数据验证,只要将 field 类的实例名写成函数 validate_fieldname ,即可自定义验证改字段:

JSONLINT:python的json数据验证库实例解析

对数组类型进行验证

jsonlint 诞生可以说主要就是为了解决如何验证数组类型的问题,在jsonlint这很容易实现:

ListField 类作为一个 Field 容器,容纳其它类型 Field 的数组,将对应类型的数组直接传入,即可有效的验证;ListField 同样也可以进行自定义验证。

对对象类型进行验证

对象类型在一些 REST APIs 的 web 应用中也经常存在,对此 jsonlint 也作了支持。只要将 Json 子类传入 ObjectField 中即可进行验证:

写在最后

jsonlint 诞生初衷就是因为本人想用类似 wtforms 的方式来验证json,这样不但有着良好的验证方式,还可以分割业务,避免接口主函数变得十分冗长。例如,可以定义类:

这样既可以使用 RegisterLint 的实例 user 验证数据,同时又能直接执行 user.create_user() 进行数据库操作,将数据库逻辑更好的封装。这样可以说是在 MVC 设计模式的基础上独立出了一层。

想要尝试使用 jsonlint 可以直接使用 pip 安装:

最后,jsonlint 开源在 Github : 现阶段仅由我一人维护,虽然单元测试覆盖率尽可能的全覆盖,但也不代表没有bug,希望您提出您宝贵的意见,或一起维护、迭代jsonlint:

Flask 进行 web 开发,也可以使用封装好的结合了 Flask 和 jsonlint 的库: Flask-Lint

基于Python函数的作用域规则和闭包(详解) 作用域规则命名空间是从名称到对象的映射,Python中主要是通过字典实现的,主要有以下几个命名空间:内置命名空间,包含一些内置函数和内置异常

对变量赋值的理解--Pyton中让两个值互换的实现方法 #Pyton中让两个值互换的实现方法#方法一:可以理解为相当于是同时赋值a=5b=4a,b=b,aprint(a,b)#方法二:可以理解为拿箱子过程c=d=e=c#定义第三个人e,将箱

教女朋友学Python(一)运行环境搭建 原创 下班比较早,吃了饭没什么事,就和女朋友一起研究了Python。编程语言有很多,为什么选择它呢?因为它火吧,没什么好解释的,下面开始第一步,环

标签: JSONLINT:python的json数据验证库实例解析

本文链接地址:https://www.jiuchutong.com/biancheng/375460.html 转载请保留说明!

上一篇:详解如何使用Python编写vim插件(用pyth)

下一篇:基于Python函数的作用域规则和闭包(详解)(python函数例子)

  • 事业单位交所得税是否可以报国高新
  • 企业取得房租收据怎么写
  • 买房契税如何计算
  • 如何查询公司是否是小微企业
  • 偷税行为五年后被发现要接受行政处罚吗?
  • 企业增值税免税需要备案吗
  • 个体定期定额怎么征税2023
  • 总资产报酬率的计算公式
  • 房地产开发企业土地增值税预缴
  • 个税年度累计计算器
  • 房地产企业配套设施的核算内容
  • 亏损年底结转会计分录
  • 长期股权投资减值准备
  • 其他应收款是否要收利息
  • 耗材如何入账
  • 拿到发票后如何处理
  • 每股收益的无差别点小于息税前利润选择什么筹资方式
  • 技术服务费属于无形资产吗
  • 金税盘增值税普通发票红冲操作流程
  • 增值税开票系统收款人在哪里设置
  • 营改增之后账务怎么处理
  • 印花税计税金额怎么算
  • 办公室出租中介公司
  • 住房公积金业务挂起
  • 年终奖扣税标准计算器
  • 按年缴纳年金的企业缴费部分,应按照全年一次性奖金
  • 一般纳税人有什么区别
  • 采购材料的运费怎么做分录
  • 电脑怎么一键返回到桌面
  • 上年度所得税未计提已交本年度如何计提
  • PHP mysql_result()函数使用方法
  • 反射动态创建对象
  • Win10 20H2/2004 Beta Build 19042.789累积更新补丁KB4598291正式推送
  • 贸易公司出口退税政策最新
  • 主营业务利润率多少合适
  • php设置图片将图片居中
  • 税收变动作用
  • 凭证怎么记账
  • zabbix server端口
  • 腾讯云验证码服务
  • echarts快速上手
  • typescript some
  • 结转已销产品计入什么科目
  • 招待费超出部分的分录
  • 小企业会计准则没有以前年度损益调整科目
  • 外贸进出口企业注册资金
  • 转让不动产为什么能差额
  • java timestamp localdatetime
  • mysql 缓冲区
  • 企业购买的理财产品 亏损了,是否可以税前扣除
  • 单位买车和个人买车交税有何不同
  • 个人独资公司对外如何承担责任
  • 资产减值损失科目
  • 营改增和个税改革的意义
  • 业务招待费进项税额转出会计分录
  • 免费赠送客户入群的文案
  • 一般情况下银行加权平均成本的变化主要取决于什么因素
  • 收到货款确认收入还是开好发票确认收入
  • 企业贷款利息多少
  • linux内核构成
  • window系统怎么用
  • 摄像头无法启用
  • mac通讯录怎么删除
  • 直接玩鬼泣4
  • ghost操作指南
  • 摄像头挡住了
  • string获取文件名
  • Android从零单排02_Eclipse搭建Android环境01
  • jQuery仿写百度百科的目录树
  • android的handler
  • CSS expression控制图片自动缩放效果代码[兼容 IE,Firefox]
  • selenium 与 chrome 进行qq登录并发邮件操作实例详解
  • android摇一摇实现
  • js对象判断
  • 税收六大体系和六大能力基层
  • ca证书登录不了网厅怎么办
  • 小规模纳税人销售货物税率是多少
  • 国家税务总局资阳市雁江区税务局
  • 企业所得税优惠事项管理目录2023
  • 2020十大经济年度人物揭晓
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设