Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
JSON Schema and JSONNanny
Search
Yulin Ding
July 25, 2013
Technology
0
230
JSON Schema and JSONNanny
Yulin Ding
July 25, 2013
Tweet
Share
Other Decks in Technology
See All in Technology
ZOZOマッチのアーキテクチャと技術構成
zozotech
PRO
2
850
ソフトウェア エンジニアとしての 姿勢と心構え
recruitengineers
PRO
25
12k
退屈なことはDevinにやらせよう〜〜Devin APIを使ったVisual Regression Testの自動追加〜
kawamataryo
4
980
「魔法少女まどか☆マギカ Magia Exedra」の必殺技演出を徹底解剖! -キャラクターの魅力を最大限にファンに届けるためのこだわり-
gree_tech
PRO
0
420
Grafana MCPサーバーによるAIエージェント経由でのGrafanaダッシュボード動的生成
hamadakoji
1
900
JavaScript 研修
recruitengineers
PRO
6
1.3k
AI時代にPdMとPMMはどう連携すべきか / PdM–PMM-collaboration-in-AI-era
rakus_dev
0
240
オブザーバビリティが広げる AIOps の世界 / The World of AIOps Expanded by Observability
aoto
PRO
0
210
まだ間に合う! StrandsとBedrock AgentCoreでAIエージェント構築に入門しよう
minorun365
PRO
10
680
MCPで変わる Amebaデザインシステム「Spindle」の開発
spindle
PRO
2
1.4k
「魔法少女まどか☆マギカ Magia Exedra」での負荷試験の実践と学び
gree_tech
PRO
0
420
Bye-Bye Query Spaghetti: Write Queries You'll Actually Understand Using Pipelined SQL Syntax
tobiaslampertlotum
0
120
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
330
21k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
21k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
We Have a Design System, Now What?
morganepeng
53
7.8k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
30
9.6k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
Git: the NoSQL Database
bkeepers
PRO
431
66k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Done Done
chrislema
185
16k
Fireside Chat
paigeccino
39
3.6k
The Straight Up "How To Draw Better" Workshop
denniskardys
236
140k
Transcript
JSON Schema and JSONNanny by sodabiscuit
Agenda • JSONNanny出现的前提 • JSON Schema是什么 • JSON Schema的发展历史 •
JSON Schema语法 • JSONNanny是什么 • JSONNanny初步
JSONNanny出现的前提 • 流程的合理性 • ⾃自然语⾔言的准确性 • 重复定义的成本 • 版本化与持续化存储 •
设计与调试⼯工具
流程的合理性 创建⽰示例 本地调试 交付下游 ⽰示例⽂文档废弃 获取线上⽰示例 修改调试 交付下游 ⽰示例⽂文档废弃 创建描述⽂文档
创建⽰示例 交付下游 ⽰示例⽂文档废弃
⾃自然语⾔言的准确性 is_empty可取值0,1 {“is_empty” : 0} products 表⽰示产品列表 {“products”:[]} {“is_empty” :
“0”} {“products”:null}
重复定义的成本 { “name” : “商品名称”, “price” : “200”, “tmall” :
true } { “title” : “商品名称”, “price” : 200, “isTmall” : 1 }
版本化与持续存储 • ⽰示例⽂文档存放在本地 • 说明⽂文档以wiki或cf形式存放 • 多版本的并⾏行 • 迁移与持续开发
设计与调试⼯工具 • 传统编辑器 • 脚本语⾔言(php,python)数据⽣生成器
JSON Schema是什么 此⽂文档类型以JSON数据格式为基础。从当前 应⽤用场景来看,JSON Schema所能做的主要 是对数据形式以及操作⽅方式进⾏行约束,同时 也包括对校验、⽂文档、链接导航、访问控制 的定义。
JSON Schema历史 • 2009.12.5 draft 01 • 2010.3.23 draft 02
• 2010.11.22 draft 03 • 2013.1.31 draft 04
$schema { “$schema” : “http://json-schema.org/draft-03/schema#” } { “$schema” : “http://json-schema.org/draft-04/schema#”
}
type “user” : { “type” : “string” } “user” :
{ “type” : [“null”, “object”] } { “user” : null } { “user” : {“foo” : “bar”} }
title, description “user” : { “type” : “string”, “title” :
“⽤用户名称”, “description” : “更详细的描述” } “user” : “sodabiscuit”
disallow “user” : { “disallow” : null } { “user”
: null } { “user” : {“foo” : “bar”} }
properties { “type”: “object”, “properties” : { “price” : {
“type” : “number” } } } { “price” : 200 }
patternProperties { “type”: “object”, “patternProperties” : { “[a-z0-9]+” : {
“type” : “array” } } } { “9ef84a26d” : [] }
additionalProperties { “type”: “object”, “properties” : { “price” : {
“type” : “number” } }, “additionalProperties” : { “type” : “number” } } { “price” : 200, “discount” : 20 }
required { “type”: “object”, “properties” : { “price” : {
“type” : “number”, “required” : true } } } { “price” : 200 }
items “product_id_list” : { “type” : “array”, “items” : {
“type” : “string” } } { “product_id_list” : [“9ef84a26d”, “ac78dcmd2”] }
additionalItems { “type”: “array”, “items” : [ { “type” :
“boolean” }, { “type” : “number” } ] “additionalItems” : { “type” : “string” } } [true, 1, “foo”, “bar”]
minItems,maxItems,uniqueItems “product_id_list” : { “type” : “array”, “items” : {
“type” : “string” }, “minItems” : 2, “uniqueItems” : true } { “product_id_list” : [“foo”, “bar”] }
minimum,maximum “price” : { “type” : “number”, “minimum” : “1”,
“maximum” : “20” } { “price” : 15 }
exclusiveMinimum,exclusiveMaxi mum “price” : { “type” : “number”, “minimum” :
“1”, “maximum” : “20”, “exclusiveMinimum” : true } { “price” : 2 }
pattern,minLength,maxLength “item_number_id” : { “pattern” : ”[0-9]+”, “minLength” : 3
} { “item_number_id” : 976 }
enum “mall” : { “type” : number, “enum” : [0,1]
} { “mall” : 0 }
extends { “item” : { “type”: “object”, “properties” : {
“price” : { “type” : “number” } } } } { “item” : { “type”: “object”, “properties” : { “discount” : { “type” : “number” } }, “extends” : #/item } }
JSONNanny是什么 • 持续化存储平台 • ⽰示例存储 • 开发与设计⼯工具 • 接⼝口开放
Demo & QA