diff options
author | Morten Johan Sørvig <morten.sorvig@digia.com> | 2013-09-05 07:55:49 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-10-17 08:07:25 +0200 |
commit | 89ef515177fd5a0b5d95dcffd5fd0b0669e3625a (patch) | |
tree | 0fb87c82c882168141c1194dabbc47915f10eb98 /tests/auto/tools/qmake/testdata/json/json.pro | |
parent | f47958fa148d6ea9ece0bec3ca9ba67d9c68ea19 (diff) |
Add JSON parsing support to qmake.
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>
Diffstat (limited to 'tests/auto/tools/qmake/testdata/json/json.pro')
-rw-r--r-- | tests/auto/tools/qmake/testdata/json/json.pro | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/auto/tools/qmake/testdata/json/json.pro b/tests/auto/tools/qmake/testdata/json/json.pro new file mode 100644 index 0000000000..33440b3209 --- /dev/null +++ b/tests/auto/tools/qmake/testdata/json/json.pro @@ -0,0 +1,26 @@ +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) |