From 94d54036731e751c8ea8257fa63ca1ebfd02c480 Mon Sep 17 00:00:00 2001 From: cxl Date: Fri, 4 Nov 2011 18:19:14 +0000 Subject: [PATCH] reference: JSON reference example git-svn-id: svn://ultimatepp.org/upp/trunk@4126 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- reference/JSON/JSON.upp | 10 +++++ reference/JSON/init | 4 ++ reference/JSON/main.cpp | 33 +++++++++++++++++ reference/JSON/test.json | 79 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 126 insertions(+) create mode 100644 reference/JSON/JSON.upp create mode 100644 reference/JSON/init create mode 100644 reference/JSON/main.cpp create mode 100644 reference/JSON/test.json diff --git a/reference/JSON/JSON.upp b/reference/JSON/JSON.upp new file mode 100644 index 000000000..8e93a75d4 --- /dev/null +++ b/reference/JSON/JSON.upp @@ -0,0 +1,10 @@ +uses + Core; + +file + test.json, + main.cpp; + +mainconfig + "" = "SSE2"; + diff --git a/reference/JSON/init b/reference/JSON/init new file mode 100644 index 000000000..95f1c4ee3 --- /dev/null +++ b/reference/JSON/init @@ -0,0 +1,4 @@ +#ifndef _JSON_icpp_init_stub +#define _JSON_icpp_init_stub +#include "Core/init" +#endif diff --git a/reference/JSON/main.cpp b/reference/JSON/main.cpp new file mode 100644 index 000000000..dcd499854 --- /dev/null +++ b/reference/JSON/main.cpp @@ -0,0 +1,33 @@ +#include "JSON.h" + +CONSOLE_APP_MAIN +{ + Value js = ParseJSON(LoadFile(GetDataFile("test.json"))); + DUMP(js); + DUMP(js["age"]); + Value phone_number = js["phoneNumber"]; + DUMP(phone_number); + DUMP(phone_number.GetCount()); + for(int i = 0; i < phone_number.GetCount(); i++) { + DUMP(phone_number[i]["type"]); + DUMP(phone_number[i]["number"]); + } + + DUMP(AsJSON(js, true)); + DUMP(AsJSON(js)); + + LOG("- Partial parsing"); + ValueArray va; + va << js << js << js; + String s = AsJSON(va); + DUMP(s); + CParser p2(s); + p2.PassChar('['); + if(!p2.Char(']')) { + do { + DUMP(ParseJSON(p2)["firstName"]); + } + while(p2.Char(',')); + p2.PassChar(']'); + } +} diff --git a/reference/JSON/test.json b/reference/JSON/test.json new file mode 100644 index 000000000..9e4aa5806 --- /dev/null +++ b/reference/JSON/test.json @@ -0,0 +1,79 @@ +{ + "firstName": "John", + "lastName" : "Smith", + "age" : 25, + "address" : + { + "streetAddress": "21 2nd Street", + "city" : "New York", + "state" : "NY", + "postalCode" : "10021" + }, + "phoneNumber": + [ + { + "type" : "home", + "number": "212 555-1234" + }, + { + "type" : "fax", + "number": "646 555-4567" + } + ], + "nulltest" : null, + "truetest" : true, + "falsetest" : false + }, +{ + "firstName": "John", + "lastName" : "Smith", + "age" : 25, + "address" : + { + "streetAddress": "21 2nd Street", + "city" : "New York", + "state" : "NY", + "postalCode" : "10021" + }, + "phoneNumber": + [ + { + "type" : "home", + "number": "212 555-1234" + }, + { + "type" : "fax", + "number": "646 555-4567" + } + ], + "nulltest" : null, + "truetest" : true, + "falsetest" : false + }, + { + "firstName": "John", + "lastName" : "Smith", + "age" : 25, + "address" : + { + "streetAddress": "21 2nd Street", + "city" : "New York", + "state" : "NY", + "postalCode" : "10021" + }, + "phoneNumber": + [ + { + "type" : "home", + "number": "212 555-1234" + }, + { + "type" : "fax", + "number": "646 555-4567" + } + ], + "nulltest" : null, + "truetest" : true, + "falsetest" : false + } +] \ No newline at end of file