JavaScript Object Notation JSON RESTful JSON AJAX XML JSON JSON JSON / API 2007 JSON Rebecca Riordan Head First AJAX O Reilly AJAX XML View Head First AJAX JSON Java JSON JUnit API Java JSON RESTful API JSON 2009 XML XML Schema JSON XML 2010 JSON Schema XML JSON Schema
vi JSON JSON API XML JSON JSON JavaScript RESTful JSON Douglas Crockford JSON www.json.org / RESTful API JavaScript Node.js Ruby on Rails Java Groovy Go Scala Perl Python Clojure C# / JSON JSON GitHub Node.js Scott Davis JBoss at Work JSON JSON JSON
vii Node.js Ruby on Rails Java JSON JSON Schema JSON API JSON JSON JSON JSON JSON JSON HAL json:api MongoDB JSON Apache Kafka JSON JSON API JSON JSON / Mocha/Chai Minitest JUnit JSON JSON Schema JSON JSON JavaScript AJAX JSON JavaScript REST Ruby on Rails Java JavaScript JSON
viii JSON 概要與平台 JSON 生態系 JSON 企業實務 JSON JSON 概要 JSON JSON JavaScript 與 JSON JavaScript Node.js Mocha/Chai JSON Ruby on Rails 與 JSON Ruby JSON Rails JAVA 與 JSON Java Sprint Boot JSON JSON JSON Schema JSON Schema JSON JSON Schema API JSON 搜尋 jq JSONPath JSON JSON 轉換 JSON JSON JSON XML HTML JSON JSON 與超媒體 JSON HAL jsonapi JSON 與 MongoDB MongoDB JSON JSON 與 Kafka Apache Kafka JSON
第一章 JSON JavaScript Object Notation JSON RESTful API JSON Java JavaScript Ruby C# PHP Python Groovy JSON JSON / JSON Representational State Transfer REST Node.js package.json MongoDB NoSQL Kafka JSON REST RESTful Web Services HTTP JSON Internet Engineering Task Force IETF Ecma Internationa European Computer Manufacturers Association ECMA JSON Douglas Crockford 2001 JSON 2006 IETF RFC 4627 JSON http://tools.ietf.org/html/rfc4627 Ecma International 2013 ECMA 404 JSON JSON http://bit.ly/2skddev Ecma Douglas Crockford Google+ http://bit. ly/2thzmkj JSON
4 Tim Bray 2014 IETF RFC 7158 http://tools.ietf.org/html/rfc7158 Douglas Crockford RFC 7159 http://tools.ietf.org/html/rfc7159 IETF 4627 JSON 1-1 JSON 1-1 firstvalidobject.json { "thisis": "My first JSON document" JSON { [ ] / "thisis" "My first JSON document" JSONLint https://jsonlint.com/ Validate 1-1
JSON 5 1-1 JSONLint JSON 1-2 JSON 1-2 firstvalidarray.json [ "also", "a", "valid", "JSON", "doc" ] JSON JSONLint Validate 1-2
6 1-2 JSONLint JSON JSON JSON Ecma International IETF JSON JSON JSON RESTful API JSON JavaScript
JSON 7 JavaScript JSON JavaScript Node.js AngularJS React Backbone Ember Mode/View/Controller MVC JavaScript Douglas Crockford JSON JavaScript JavaScript RESTful API JSON JSON RESTful API LinkedIn Twitter Facebook Salesforce GitHub DropBox Tumblr Amazon Web Services AWS Programmableweb http://www.programmableweb.com/ JSON RESTful API REST JSON JSON XML JSON / OO JSON XML JSON JSON XML JSON XML Douglas Crockford JSON REST JSON Node.js Sublime Text Node.js package.json npm Sublime Text IDE JSON
8 JSON JSON JSON File/MIME JSON JSON / / 名稱 / 值對 1-3 / 1-3 namevalue.json { "conference": "OSCON", "speechtitle": "JSON at Work", "track": "Web APIs" / "conference" "OSCON"
JSON 9 JSON 物件 / 1-4 1-4 simplejsonobject.json { "address" : { "line1" : "555 Any Street", "city" : "Denver", "stateorprovince" : "CO", "ziporpostalcode" : "80202", "country" : "USA" 1-5 1-5 jsonobjectnestedarray.json { "speaker" : { "firstname": "Larson", "lastname": "Richard", "topics": [ "JSON", "REST", "SOA" ] 1-6 1-6 jsonobjectnestedobject.json { "speaker" : { "firstname": "Larson", "lastname": "Richard", "topics": [ "JSON", "REST", "SOA" ], "address" : { "line1" : "555 Any Street", "city" : "Denver", "stateorprovince" : "CO", "ziporpostalcode" : "80202", "country" : "USA"
10 { / { 陣列 1-7 1-7 jsonarray.json { "presentations": [ { "title": "JSON at Work: Overview and Ecosystem", "length": "90 minutes", "abstract": [ "JSON is more than just a simple replacement for XML when", "you make an AJAX call." ], "track": "Web APIs", { "title": "RESTful Security at Work", "length": "90 minutes", "abstract": [ "You've been working with RESTful Web Services for a few years", "now, and you'd like to know if your services are secure." ], "track": "Web APIs" ] []
JSON 11 [ ] 0 1 JSON JSON / : JSON 物件 陣列 字串 數字 布林 空 字串 數字 布林 空 字串 1-8 JSON 1-8 jsonstrings.json [ "fred", "fred\t", "\b", "", "\t", "\u004a" ] Unicode " " '
12 JSON \" \\ \/ \b \f \n \r \t \u Tab 數字 1-9 JSON 1-9 jsonnumbers.json { "age": 29, "cost": 299.99, "temperature": -10.5, "unitcost": 0.2,
JSON 13 "speedoflight": 1.23e11, "speedoflight2": 1.23e+11, "avogadro": 6.023E23, "avogadro2": 6.023E+23, "onehundredth": 10e-3, "onetenth": 10E-2 JavaScript 0-9. 10 e E JavaScript NaN 非數字 Infinity 布林 1-10 JSON 1-10 jsonboolearn.json { "isregistered": true, "emailvalidated": false true false : true false 空 null JSON 1-11 line2 1-11 jsonnull.json { "address": {
14 "line1": "555 Any Street", "line2": null, "city": "Denver", "stateorprovince": "CO", "ziporpostalcode": "80202", "country": "USA" / JSON Douglas Crockford JSON JSON JSON Crockford JSON JSON 0.5 JSON JSON JSON JSON Crockford Yahoo! JSON group https://yhoo.it/2sp7za1 Google+ http://bit. ly/2sp83gw JSON JSON
JSON 15 JSON MIME JSON.json JSON JSON JSON Internet Assigned Numbers Authority IANA MIME application/json IANA http://bit.ly/1cognwm RESTful 內容協商 HTTP JSON MIME JSON JSON JSON JSON Google JSON Style Guide https://google.github.io/styleguide/jsoncstyleguide.xml Google JSON Style Guide API 屬性名稱 Google / JSON lowercamelcase snake_case lowercamelcase Java JavaScript lowercamelcase snake_case _ Ruby on Rails snake_case Google RESTful API 1-12 lowercamelcase
16 1-12 jsonpropertyname.json { "firstname": "John Smith" 日期屬性值 Google JSON Style Guide 1-13 RFC 3339 http://www.ietf.org/rfc/rfc3339.txt 1-13 jsondateformat.json { "dateregistered": "2014-03-01T23:46:11-05:00" UTC UTC/GMT 5 RFC 3339 ISO 8601 International Standards Organization ISO 8601 http://www.iso.org/iso/home/standards/ iso8601.htm T RFC 3339 經緯值 API Google Maps GIS API Google JSON Style Guide ISO 6709 http://en.wikipedia.org/wiki/ ISO_6709 Google Maps 40.748747 N, 73.985547 W JSON 1-14 1-14 jsonlatlon.json { "empirestatebuilding": "40.748747-73.985547" DD.DDDD DDD.DDDD
JSON 17 縮排 Google JSON Style Guide JSON API JSON JSON JSON JavaScript ECMA 262 JavaScript MyConference JSON RESTful API 1. JSON JSON 2. JSON JSON 3. API nobackend nobackend http://nobackend.org/ nobackend nobackend UI API json-server RESTful API JSON
18 API API URI API API JSON Node.js/Rails/Java API API API API API API API UI API API API JavaScript Ruby on Rails Java JSON JSON JSON JSON Editor Online http://www.jsoneditoronline.org / JSON JSON JSONmate http://jsonmate.com
JSON 19 JSON Editor Online 功能 JSON JSON Editor Online JSON JSON JSON "firstname":"ester JSON X JSON JSON Indent JSON Append + JSON / JSON JSON JSON JSON JSON Save Save to Disk JSON JSON Open Open from Disk JSON JSON Editor Online JSON Editor Online 上的主講人資料 JSON 1-3 JSON Editor Online
20 1-3 JSON Editor Online JSON JSON JSON Generator JSON Editor Online JSON Editor Online API JSON Generator http://www.json-generator.com spearkers.json https://github.com/tmarrs/json-atwork-examples/blob/master/chapter-1/speakers.json spearkers.json GitHub https://github.com/tmarrs/json-at-work-examples/blob/master/chapter-1/ jsongeneratortem JSON Generator
JSON 21 API API RESTful API json-server Node.js speaker.json Web API json-server GitHub https://github.com/typicode/json-server A 1. Node.js json-server Node.js Node.js Node.js 2. json-server npm 3. JSONView Postman JSON JSONView Chrome Firefox JSON Postman GUI 5000 json-server cd chapter-1 json-server -p 5000./speakers.json http://localhost:5000/speakers 1-4 API JSONView JSON
22 1-4 JSONView json-server URI id http://localhost:5000/speakers/0 HTTP GET Postman RESTful API HTTP GET POST PUT DELETE HTTP Postman API 1. http://localhost:5000/speakers/0 2. HTTP verb DELETE 3. Send DELETE Postman HTTP 200 OK 1-5
JSON 23 1-5 Postman http://localhost:5000/speakers/0 1-6 1-6 Ctrl-C json-server API HTTP JavaScript Ruby Java HTTP GET json-server HTTP GET POST PUT DELETE Mountebank http://www.mbtest.org API API JSON RESTful API API
24 JSON JSON Editor Online JSON API JSON JavaScript Ruby on Rails Java JavaScript JSON json-server API