89ef515177
Add qjson* implementation files from corelib/json to the qmake build. Add a read-only compile mode, enabled by defining QT_JSON_READONLY. Add qmake built-in function parseJson(file, into) which parses a json file into the given variable. qmake uses a flat key -> value-list implementation for storing variables, which means that some hackery is need to represent arbitrarily nested JSON. Use a special "_KEYS_" variable for arrays and objects: Arrays: ["item1", "item2"] $${array._KEYS_} -> 0 1 2 $${array.0} -> "item1" $${array.1} -> "item2" Objects: { "key1" : "value1", "key2" : "value2" } $${object._KEYS_} -> key1 key2 $${object.key1} -> value1 $${object.key2} -> value2 Change-Id: I0aa2e4e4ae14fa25be8242bc16d3cffce32504d2 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
27 lines
745 B
Prolog
27 lines
745 B
Prolog
jsontext = $$cat($$PWD/test.json)
|
|
parseJson(jsontext, json)
|
|
|
|
# print all keys
|
|
message(json._KEYS_ $${json._KEYS_})
|
|
|
|
# print array
|
|
message(json.array._KEYS_ $${json.array._KEYS_})
|
|
for(key, json.array._KEYS_): \
|
|
message(json.array.$${key} $$eval(json.array.$${key}))
|
|
|
|
# print object
|
|
message(json.object._KEYS_ $${json.object._KEYS_})
|
|
for(key, json.object._KEYS_): \
|
|
message(json.object.$${key} $$eval(json.object.$${key}))
|
|
|
|
# print value tyes
|
|
message(json.string: $${json.string})
|
|
message(json.number: $${json.number})
|
|
message(json.true: $${json.true})
|
|
message(json.false: $${json.false})
|
|
message(json.null: $${json.null})
|
|
|
|
# check that booleans work
|
|
$${json.true}: message(json.true is true)
|
|
!$${json.false}: message(json.false is false)
|