lambdaway
::
JSON
1
|
list
|
login
|
load
|
|
_img http://c2.com/ward/ascent.jpg {center [[the ascent of ward|http://found.ward.bay.wiki.org/view/the-ascent-of-ward]]} {pre '{def WC Ward Cunningham} -> {def WC Ward Cunningham} '{S.first {WC}} -> {S.first {WC}} '{S.last {WC}} -> {S.last {WC}} {quote {b {W.first {S.first {WC}}}}{sup {W.rest {S.first {WC}}}}. {b {W.first {S.last {WC}}}}{sup {W.rest {S.last {WC}}}}.} -> {b {W.first {S.first {WC}}}}{sup {W.rest {S.first {WC}}}}.{b {W.first {S.last {WC}}}}{sup {W.rest {S.last {WC}}}}. °°° 2) array '{def AWC {A.new Ward Cunningham}} -> {def AWC {A.new Ward Cunningham}} '{AWC} -> {AWC} '{A.get 0 {AWC}} -> {A.get 0 {AWC}} '{A.get 1 {AWC}} -> {A.get 0 {AWC}} 3) associative array '{def HWC {H.new first_name Ward | last_name Cunningham}} -> {def HWC {H.new first_name Ward | last_name Cunningham}} '{H.disp {HWC}} -> {H.disp {HWC}} '{H.get {HWC} first_name} -> {H.get {HWC} first_name} '{H.get {HWC} last_name} -> {H.get {HWC} last_name} °°° } {hr} _h1 XML | JSON | LT _p Comparing structured datas built with XML, JSON and '{lambda talk}. _h2 1) XML {pre 1) building the structure <{span}individu> <{span}firstName> John <{span}/firstName> <{span}lastName> Smith <{span}/lastName> <{span}isAlive> true <{span}/isAlive> <{span}age> 27 <{span}/age> <{span}address> <{span}streetAddress> 21 2nd Street <{span}/streetAddress> <{span}city> New York <{span}/city> <{span}state> NY <{span}/state> <{span}postalCode> 10021-3100 <{span}/postalCode> <{span}/address> <{span}phoneNumbers> <{span}1> <{span}type> home <{span}/type> <{span}number> 212 555-1234 <{span}/number> <{span}/1> <{span}2> <{span}type> office <{span}/type> <{span}number> 646 555-4567 <{span}/number> <{span}/2> <{span}/phoneNumbers> <{span}children> <{span}1> Jules <{span}/1> <{span}2> Lucie <{span}/2> <{span}3> Cyrille <{span}/3> <{span}children> <{span}spouse> Candice <{span}/spouse> <{span}/individu> 2l getting datas: document.getElementByTagName("individu > firstName")[0].innerHTML -> John document.getElementByTagName("individu > chidren > 1").innerHTML -> Jules ... } _h2 2) JSON {pre °° 1) building the JSON element var individu = { "firstName": "John", "lastName": "Smith", "isAlive": true, "age": 27, "address": { "streetAddress": "21 2nd Street", "city": "New York", "state": "NY", "postalCode": "10021-3100" }, "phoneNumbers": [ { "type": "home", "number": "212 555-1234" }, { "type": "office", "number": "646 555-4567" } ], "children": ["Jules","Julie","Cyrille"], "spouse": "Candice" } 2) getting data: individu.firstName -> "John" individu.children[0] -> "Jules" ... °°} _h2 3) '{lambda talk} _p We can use associative arrays (hashes) defined in a small libray {b [[lib_hash]]}, a wiki page containing 5 functions: {center {H.lib} } {require lib_hash} {pre 1) buiding the structure: '{def individu {H.new firstName John | lastName Smith | isAlive true | age 27 | address {H.new streetAddress 21 2nd Street | city New York | state NY | postalCode 10021-3100} | phoneNumbers {H.new 1 {H.new type home | number 212 555-1234} | 2 {H.new type office | number 646 555-4567}} | children {H.new 1 Jules | 2 Lucie | 3 Cyrille} | spouse Candice }} -> {def individu {H.new firstName John | lastName Smith | isAlive true | age 27 | address {H.new streetAddress 21 2nd Street | city New York | state NY | postalCode 10021-3100 } | phoneNumbers {H.new 1 {H.new type home | number 212 555-1234 } | 2 {H.new type office | number 646 555-4567 } } | children {H.new 1 Jules | 2 Lucie | 3 Cyrille } | spouse Candice }} 2) getting datas: '{H.get {individu} firstName} -> {H.get {individu} firstName} '{H.get {H.get {individu} address} streetAddress} -> {H.get {H.get {individu} address} streetAddress} '{H.get {H.get {H.get {individu} phoneNumbers} 1} number} -> {H.get {H.get {H.get {individu} phoneNumbers} 1} number} '{H.disp {H.get {individu} children}} -> {H.disp {H.get {individu} children}} '{H.get {H.get {individu} children} 1} -> {H.get {H.get {individu} children} 1} } _h2 todo _p Using some special form ({i still to be written}) translating {code [name value]} into {code '{H.new name value}} and {code '{get name field}} into {code '{H.get name field}} we could build the structure more simply {pre '{def individu [hash [firstName John] [lastName Smith] [isAlive true] [age 27] [address [streetAddress> 21 2nd Street] [city> New York] [state> NY] [postalCode> 10021-3100]] [phoneNumbers [1 [type home] [number 212 555-1234]] [2 [type office] [number 646 555-4567]]] [children [1 Jules] [2 Lucie] [3 Cyrille]] [spouse Candice] ] } } _p and get values this way {pre '{get individu firstName} -> John '{get individu {get address streetAddress}} -> 21 2nd Street '{get individu {get phoneNumbers {get 1 number}}} -> 212 555-1234 '{get individu children} -> [Jules,Lucie,Cyrille] '{get individu {get children 1}} -> Jules } _h2 refs _ul [[http://ward.asia.wiki.org/view/how-wiki-works/view/json-schema|http://ward.asia.wiki.org/view/how-wiki-works/view/json-schema]] _ul [[https://webdatarender.com/|https://webdatarender.com/]]
lambdaway v.20211111