python nginx做网站,wordpress id重置,搜索引擎优化缩写,品牌网络推广方式使用阿里巴巴json映射在本文中#xff0c;我们将探讨在创建和共享API时出现的问题。 特别是#xff0c;需要#xff1a; 表达数据的结构 提供对该数据的验证 允许将来改变主意 通过您拥有的部分数据与客户进行沟通 缺少数据时填写空白 人们通常使用版本编号的API解决此… 使用阿里巴巴json映射 在本文中我们将探讨在创建和共享API时出现的问题。 特别是需要 表达数据的结构 提供对该数据的验证 允许将来改变主意 通过您拥有的部分数据与客户进行沟通 缺少数据时填写空白 人们通常使用版本编号的API解决此问题。 API的每个版本都绑定到一个架构。 模式通常以JSON模式格式表示。 上述支持库不支持在同一模式的多个版本之间进行转换。 Apache Avro可以很好地支持模式演化。 Avro可以使用类似于JSON Schema的方式定义其架构并且能够读取和写入JSON但是如果您通过JSON中的联合类型使用可空字段则需要JSON2AvroConverter来读取外观正常的JSON。 但是Avro并不擅长读取缺少字段的JSON。 JSON Schema的草案7支持默认值 everit json-schema库可以在验证时将默认值替换为对象。 放在一起 比方说 我有一个模式可以为任何非强制性内容提供默认值 我有一个规则那就是架构的未来版本都不能添加强制性的内容 我有具有给定字段的数据无论特定版本的架构是否需要它们 我希望返回对特定模式版本有效的数据 我将需要 筛选出源中而不是架构中的字段 当字段在模式中但不在数据中时添加默认值 以上所有内容均在GitHub的POC中进行了探讨 。 POC POC使用everit库填充默认值并演示如何在模式中表达默认值。 在Java代码中表达JSON有点烦人因此最好的办法是提取模式的测试并在JSONEditorOnline之类的工具中进行探索 。 希望您的IDE在复制和粘贴时会取消转义字符-IntelliJ会。 POC具有基本的实现可用于对模式和输入JSON进行迭代从而删除模式中未知的JSON字段。 这是很基本的原因因为它无法处理JSON模式中可能出现的边缘情况并且不能容忍输入JSON中的数据类型与模式所描述的类型不同。 也就是说它已经通过了一些有用的测试因此绝对是将来进行调查的起点。 结论 模式演化可以非常精确地完成。 Apache Avro允许对同一模式的多个版本进行建模加载一个版本并转换为另一个版本但这不是JSON的好朋友并且要求源JSON必须采用正确的格式以用于其中一个模式。 JSON模式是REST API定义的基本构建块。 如果在正确的库中使用它可以在验证期间使用它提供默认值的能力之上将其强制用作过滤器。 我希望这里的POC代码对某人有用。 翻译自: https://www.javacodegeeks.com/2020/02/using-json-schema-validation-to-map-sparse-json.html使用阿里巴巴json映射