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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Yulin Ding
July 25, 2013
Technology
260
0
Share
JSON Schema and JSONNanny
Yulin Ding
July 25, 2013
Other Decks in Technology
See All in Technology
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
2.6k
Claude Code / Codex / Kiro に AWS 権限を 渡すとき、何を設計すべきか
k_adachi_01
6
1.9k
【禁断】Obsidianの第二の脳に「知の巨人」と呼ばれた師匠の脳をロードしてみた
nagatsu
0
2.6k
M&Aで増え続けるプロダクトに少数QAはどう立ち向かうか─GENDAが挑む、全員で取り組む品質標準化戦略 / GENDA Tech Talk #4
genda
0
310
TypeScriptで実現する既存APIを活用したリモートMCPサーバー構築 / TSKaigi 2026
soarteclab
1
180
AI時代に求められる思考のパラダイムシフト
nrinetcom
PRO
0
110
GitHub Copilot CLI の Rubber Duck 機能を使ってコーディングの品質をあげよう #techbaton_findy
stefafafan
0
130
ソフトウェアサプライチェーン攻撃対策として今からサクッとできること
flatt_security
2
110
Agent Development Kit (ADK)で学ぶ実践Context Engineeringと社内での応用例
lycorptech_jp
PRO
0
140
実践 TanStack Start ― 新規プロダクトを開発して確立した、サーバーとクライアント境界の設計パターン / Practical TanStack Start Server-Client Boundary Patterns
kaminashi
2
170
JaSSTに関わることで変わった人生観 #jasstnano
makky_tyuyan
0
170
Python開発環境にハーネス適用を検討する
yuuka51
0
270
Featured
See All Featured
RailsConf 2023
tenderlove
30
1.4k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.3k
Mind Mapping
helmedeiros
PRO
1
190
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
How Software Deployment tools have changed in the past 20 years
geshan
0
33k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
120
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
200
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.8k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.3k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.6k
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