Top Banner
Persistent Computing on the Web with JSON Schema and Referencing Kris Zyp
28

JSON Referencing and Schema

May 18, 2015

Download

Technology

kriszyp
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: JSON Referencing and Schema

Persistent Computing on the Web with

JSON Schema and Referencing

Kris Zyp

Page 2: JSON Referencing and Schema

Copyright SitePen, Inc. 2008. All Rights Reserved

Overview

•JSON Referencing

•JSON Schema

•The possiblities...

Page 3: JSON Referencing and Schema

Copyright SitePen, Inc. 2008. All Rights Reserved

JSON + Hyperlinks = JSON Referencing

Page 4: JSON Referencing and Schema

Copyright SitePen, Inc. 2008. All Rights Reserved

http://www.sitepen.com/blog/2008/06/17/json-referencing-in-dojo/

JSON Referencing

•Cyclic

•Multiple references

•Cross-message references

•Cross-site references

Page 5: JSON Referencing and Schema

Copyright SitePen, Inc. 2008. All Rights Reserved

JSON Referencing (ID Based)

{“name”:”Kris Zyp”,“id”:”kriszyp”,“children”:[{“id”:”jennikazyp”,“name”:”Jennika Zyp”}],“spouse”:{“name”:”Nicole Zyp”,“spouse”:{“$ref”:”kriszyp”},“children”:[{“$ref”:”jennikazyp”}]

}}

Page 6: JSON Referencing and Schema

Copyright SitePen, Inc. 2008. All Rights Reserved

JSON Referencing (Path Based)

{“name”:”Kris Zyp”,“children”:[{“name”:”Jennika Zyp”}],“spouse”:{“name”:”Nicole Zyp”,“spouse”:{“$ref”:”#”},“children”:{“$ref”:”#.children”}

}}

Page 7: JSON Referencing and Schema

Copyright SitePen, Inc. 2008. All Rights Reserved

JSON Referencing (ID + Path)

{“name”:”Kris Zyp”,“id”:”kriszyp”,“children”:[{“name”:”Jennika Zyp”}],“friends”:[{“$ref”:”jesse#.spouse”}]

}

Page 8: JSON Referencing and Schema

Copyright SitePen, Inc. 2008. All Rights Reserved

JSON + Schema = JSON Schema

Page 9: JSON Referencing and Schema

Copyright SitePen, Inc. 2008. All Rights Reserved

JSON Schema

schema:{"description":"A person", "type":"object", "properties": {"name": {"type":"string"}, "age" : {"type":"integer", "maximum":125}}}

instance:{“name”:”Kris”, “age”:30}

Page 10: JSON Referencing and Schema

Copyright SitePen, Inc. 2008. All Rights Reserved

JSON Schema

Schema:{"description":"A person", "type":"object", "properties": {"name": {"type":"string"}, "age" : {"type":"integer", "maximum":125,

“optional”:true}, “friends”: {“type”:”array”,

“items”:{“type”:”object”}} }}

instance:{“name”:”Kris”, “friends”:[{“name”:”Nikki”}]}

Page 11: JSON Referencing and Schema

Copyright SitePen, Inc. 2008. All Rights Reserved

JSON Schema

Schema:{“type”:”array”,“items”:[{“type”:”string”},{“type”:”number”}]

}

instance:[“foo”,44]

Page 12: JSON Referencing and Schema

Copyright SitePen, Inc. 2008. All Rights Reserved

JSON Schema

Schema:{"description":"A person", "type":["object",”string”]}

instance:“foo”

instance:{“prop”:3}

Page 13: JSON Referencing and Schema

Copyright SitePen, Inc. 2008. All Rights Reserved

JSON Schema

Schema:{"description":"A person", "type":["object",”string”]}

instance:“foo”

instance:{“prop”:3}

Page 14: JSON Referencing and Schema

Copyright SitePen, Inc. 2008. All Rights Reserved

JSON Schema

schema:{"description":"A person", "type":"object", "properties": {"name": {"type":"string"}, "gender" : {"type":"string",

"enum”:[“male”,”female”]}}, “additionalProperties”:false}

instance:{“name”:”Kris”, “gender”:”male”}

Page 15: JSON Referencing and Schema

Copyright SitePen, Inc. 2008. All Rights Reserved

What can we do with these?

Page 16: JSON Referencing and Schema

Copyright SitePen, Inc. 2008. All Rights Reserved

JSON Schema + JSON Referencing

{"description":"A Social Person", “id”:”socialperson”, "type":"object", "properties": {"name": {"type":"string"}, "age" : {

"type":"integer", "maximum":125

}, "friends" : {

“type” : ”array”,“items” : {“$ref”:”socialperson”}

} }, “extends”:{“$ref”:”person”}}

Page 17: JSON Referencing and Schema

Copyright SitePen, Inc. 2008. All Rights Reserved

http://blog.medryx.org/2008/07/24/jsonreststore-overview/

JSON Referencing + REST

•Lazy loading - Generic clients can auto-load objects as necessary

•Object identificationcan be used for saving state changes

Page 18: JSON Referencing and Schema

Copyright SitePen, Inc. 2008. All Rights Reserved

JSON Referencing + REST

GET /Person/3

{ “name”:”Kris”, “friends”:[

{“$ref”:”4”},{“$ref”:”5”}

]}

Page 19: JSON Referencing and Schema

Copyright SitePen, Inc. 2008. All Rights Reserved

JSON Referencing + JSON-RPC

POST /person/kriszyp

{“method”:”addFriend”,“id”:”1”,“params”:[{“$ref”:”jessesmith”}]

}

Page 20: JSON Referencing and Schema

Copyright SitePen, Inc. 2008. All Rights Reserved

Applying data definitions to code

Page 21: JSON Referencing and Schema

Copyright SitePen, Inc. 2008. All Rights Reserved

JSON Schema + Typed Code

Page 22: JSON Referencing and Schema

Copyright SitePen, Inc. 2008. All Rights Reserved

JSON Schema Interfaces

Page 23: JSON Referencing and Schema

Copyright SitePen, Inc. 2008. All Rights Reserved

JSON Schema Interface

{"description":"A person", "type":"object", "properties": {"name": {"type":"string"} }, “methods”:{ “getName”:{“returns”:{“type”:”string”}, “params”:[]}, “setName”:{“params”:[{“type”:”string”}]}, }}

Page 24: JSON Referencing and Schema

Copyright SitePen, Inc. 2008. All Rights Reserved

Cross-site Referencing

{“name”:”Kris Zyp”,“id”:”kriszyp”,“friends”:[{“$ref”:”http://thezyps.com/person/nikki”},{“$ref”:”http://social.com/user/33”}

]}

Page 25: JSON Referencing and Schema

Copyright SitePen, Inc. 2008. All Rights Reserved

Cross-site Typing

Page 26: JSON Referencing and Schema

Copyright SitePen, Inc. 2008. All Rights Reserved

Mobile code (run anywhere)

•Code can run anywhere

-Server JavaScript Environment

-Browser JavaScript Environment

•Consistent persisted data structures across environments

Page 27: JSON Referencing and Schema

Copyright SitePen, Inc. 2008. All Rights Reserved

Connecting and structuring data for the

futureJSON Schema and JSON

Referencing

Page 28: JSON Referencing and Schema

Copyright SitePen, Inc. 2008. All Rights Reserved