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
Platform開発が先行する Platform Engineeringの違和感
kintotechdev
4
560
roppongirb_20250911
igaiga
1
220
テストを軸にした生き残り術
kworkdev
PRO
0
200
生成AI時代のデータ基盤設計〜ペースレイヤリングで実現する高速開発と持続性〜 / Levtech Meetup_Session_2
sansan_randd
1
150
Terraformで構築する セルフサービス型データプラットフォーム / terraform-self-service-data-platform
pei0804
1
170
会社紹介資料 / Sansan Company Profile
sansan33
PRO
6
380k
サラリーマンの小遣いで作るtoCサービス - Cloudflare Workersでスケールする開発戦略
shinaps
2
440
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
8.7k
現場で効くClaude Code ─ 最新動向と企業導入
takaakikakei
1
240
生成AIでセキュリティ運用を効率化する話
sakaitakeshi
0
660
「全員プロダクトマネージャー」を実現する、Cursorによる仕様検討の自動運転
applism118
21
10k
【実演版】カンファレンス登壇者・スタッフにこそ知ってほしいマイクの使い方 / 大吉祥寺.pm 2025
arthur1
1
830
Featured
See All Featured
Docker and Python
trallard
45
3.6k
GraphQLとの向き合い方2022年版
quramy
49
14k
Statistics for Hackers
jakevdp
799
220k
Speed Design
sergeychernyshev
32
1.1k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Making the Leap to Tech Lead
cromwellryan
135
9.5k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
112
20k
Into the Great Unknown - MozCon
thekraken
40
2k
Being A Developer After 40
akosma
90
590k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
188
55k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
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