![]() |
install examples documentation |
|
// Random access to JSON data:
read-json <json> key <key> \
value [ define ] <value> \
[ status [ define ] <status> ]
[ type [ define ] <type> ]
// Sequential access to JSON data:
read-json <json> traverse begin
read-json <json> traverse \
key [ define ] <key> \
value [ define ] <value> \
[ status [ define ] <status> ] \
[ type [ define ] <type> ]
"menu"."popup"."menuitem"[1]."onclick"
{"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}
"menu"."id"
"menu"."value"
"menu"."popup"."menuitem"[0]."value"
"menu"."popup"."menuitem"[0]."onclick"
"menu"."popup"."menuitem"[1]."value"
"menu"."popup"."menuitem"[1]."onclick"
"menu"."popup"."menuitem"[2]."value"
"menu"."popup"."menuitem"[2]."onclick"
// Json text
char json_text[] =\
"{\"menu\":\
{\"id\": \"file\",\
\"value\": \"File\",\
\"popup\":\
{\"menuitem\":\
[{\"value\": \"New\", \"onclick\": \"CreateNewDoc()\"},\
{\"value\": \"Open\", \"onclick\": \"OpenDoc()\"},\
{\"value\": \"Close\", \"onclick\": \"CloseDoc()\"}\
]\
}\
}\
}\n";
// Parse json text
new-json define json_var from json_text status define st error-text define errt error-position define errp
if (st != VV_OKAY) {
@Could not parse json, error <<p-out errt>> at position <<p-num errp>>
} else {
@Json parsed okay.
}
// Get value based on key
read-json json_var key "menu"."popup"."menuitem"[1]."onclick" value define val status st
if (st != VV_OKAY) {
@Could not find json key
} else {
@Key value is <<p-out val>>
}
Json parsed okay.
Key value is OpenDoc()
// Parse JSON
new-json define jv from json_text
// Position at the beginning of the JSON document
read-json jv traverse begin
// Loop through all JSON leaf nodes, obtain normalized name, type and value
while (1)
{
// Get nodes' key, value and type. Check status for end of loop detection.
read-json jv traverse key define k value define v type define t status define s
if (s != VV_OKAY) break; // end of loop
// Output name, value and type
pf-out "Name [%s], value [%s], type [%lld]\n", k, v, t
}
read-json jv key "glossary"."title" value d