V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
sean2009
V2EX  ›  分享创造

分享一个自己写的 json-schema 生成工具

  •  
  •   sean2009 · 2017-12-29 19:18:09 +08:00 · 9892 次点击
    这是一个创建于 2303 天前的主题,其中的信息可能已经有所发展或是发生改变。

    介绍

    JSON-SCHEMA 是一种基于 JSON 格式定义 JSON 数据结构的规范,有如下特性:

    1. 描述现有数据格式。
    2. 干净的人类和机器可读的文档。
    3. 完整的结构验证,有利于自动化测试。
    4. 完整的结构验证,可用于验证客户端提交的数据。

    json-schema 演示

    {
        "type": "object",
        "properties": {
            "id": {
                "type": "integer"
            },
            "name": {
                "type": "string"
            },
            "price": {
                "type": "number",
                "minimum": 0,
                "exclusiveMinimum": true
            }
        },
        "required": ["id", "name"]
    }
    

    Why

    作者为什么开发一个 easy-Json-schema 工具呢,就是为了简化 json-schema 定义,大家看看上面的 json 定义,一个很简单结构的 json 用了非常多的字段定义,书写起来非常麻烦。

    easy-json-schema

    如果用 easy-json-schema 定义上面的 json 结构,是非常清晰和易用的。

    {
        "*id": "integer",
        "*type": "string",
        "price":{
            "type": "number",
                "minimum": 0,
                "exclusiveMinimum": true
        }
    }
    

    感兴趣的朋友可以关注下

    github: github.com/easy-json-schema

    在线演示: easy-json-schema.github.io

    3 条回复    2017-12-30 17:10:19 +08:00
    Death
        1
    Death  
       2017-12-30 00:28:15 +08:00 via Android
    这样简化会产生模糊性吧?比如 type 作为属性名时?

    比如这个
    {
    "**id": "string",
    "name": "string",
    "type":"number"
    }
    sean2009
        2
    sean2009  
    OP
       2017-12-30 11:51:11 +08:00 via Android
    如果 type 作为属性名,可以这么写

    type: {type: number}
    slgz
        3
    slgz  
       2017-12-30 17:10:19 +08:00
    工具很好, 我选择 JSON-handle
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2809 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 11:49 · PVG 19:49 · LAX 04:49 · JFK 07:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.