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

JSON Referencing and Schema

  • Upload
    kriszyp

  • View
    9.698

  • Download
    1

Embed Size (px)

Citation preview

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