MbedJSONValue library example
Dependencies: MbedJSONValue mbed
main.cpp@0:6c7d76010005, 2015-01-22 (annotated)
- Committer:
- hillkim7
- Date:
- Thu Jan 22 09:11:31 2015 +0000
- Revision:
- 0:6c7d76010005
MbedJSONValue library example
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
hillkim7 | 0:6c7d76010005 | 1 | #include "mbed.h" |
hillkim7 | 0:6c7d76010005 | 2 | #include "MbedJSONValue.h" |
hillkim7 | 0:6c7d76010005 | 3 | |
hillkim7 | 0:6c7d76010005 | 4 | /* |
hillkim7 | 0:6c7d76010005 | 5 | * The MbedJSONValue is memory hungry class as I think. |
hillkim7 | 0:6c7d76010005 | 6 | * If your platform has enough SRAM, you can go for it. |
hillkim7 | 0:6c7d76010005 | 7 | * The library itself works fine but user need to caution using it. |
hillkim7 | 0:6c7d76010005 | 8 | * It's fine with this: |
hillkim7 | 0:6c7d76010005 | 9 | * MbedJSONValue &ele = demo["menu"]["popup"]["menuitem"][i]; |
hillkim7 | 0:6c7d76010005 | 10 | * It's big problem with this(without &): |
hillkim7 | 0:6c7d76010005 | 11 | * MbedJSONValue ele = demo["menu"]["popup"]["menuitem"][i]; |
hillkim7 | 0:6c7d76010005 | 12 | */ |
hillkim7 | 0:6c7d76010005 | 13 | void parse() { |
hillkim7 | 0:6c7d76010005 | 14 | MbedJSONValue demo; |
hillkim7 | 0:6c7d76010005 | 15 | |
hillkim7 | 0:6c7d76010005 | 16 | const char *json = "{\"string\": \"it works\", \"number\": 3.14, \"integer\":5}"; |
hillkim7 | 0:6c7d76010005 | 17 | |
hillkim7 | 0:6c7d76010005 | 18 | parse(demo, json); |
hillkim7 | 0:6c7d76010005 | 19 | printf("string =%s\r\n" , demo["string"].get<string>().c_str()); |
hillkim7 | 0:6c7d76010005 | 20 | printf("number =%f\r\n" , demo["number"].get<double>()); |
hillkim7 | 0:6c7d76010005 | 21 | printf("integer =%d\r\n" , demo["integer"].get<int>()); |
hillkim7 | 0:6c7d76010005 | 22 | } |
hillkim7 | 0:6c7d76010005 | 23 | |
hillkim7 | 0:6c7d76010005 | 24 | void serialize() { |
hillkim7 | 0:6c7d76010005 | 25 | MbedJSONValue v; |
hillkim7 | 0:6c7d76010005 | 26 | MbedJSONValue inner; |
hillkim7 | 0:6c7d76010005 | 27 | string val = "tt"; |
hillkim7 | 0:6c7d76010005 | 28 | |
hillkim7 | 0:6c7d76010005 | 29 | v["aa"] = val; |
hillkim7 | 0:6c7d76010005 | 30 | v["bb"] = 1.66; |
hillkim7 | 0:6c7d76010005 | 31 | inner["test"] = true; |
hillkim7 | 0:6c7d76010005 | 32 | inner["integer"] = 1.0; |
hillkim7 | 0:6c7d76010005 | 33 | v["inner"] = inner; |
hillkim7 | 0:6c7d76010005 | 34 | |
hillkim7 | 0:6c7d76010005 | 35 | string str = v.serialize(); |
hillkim7 | 0:6c7d76010005 | 36 | printf("serialized content = %s\r\n" , str.c_str()); |
hillkim7 | 0:6c7d76010005 | 37 | } |
hillkim7 | 0:6c7d76010005 | 38 | |
hillkim7 | 0:6c7d76010005 | 39 | void advanced() { |
hillkim7 | 0:6c7d76010005 | 40 | MbedJSONValue demo; |
hillkim7 | 0:6c7d76010005 | 41 | const char *jsonsoure = |
hillkim7 | 0:6c7d76010005 | 42 | "{\"menu\": {" |
hillkim7 | 0:6c7d76010005 | 43 | "\"id\": \"f\"," |
hillkim7 | 0:6c7d76010005 | 44 | "\"popup\": {" |
hillkim7 | 0:6c7d76010005 | 45 | " \"menuitem\": [" |
hillkim7 | 0:6c7d76010005 | 46 | " {\"v\": \"0\"}," |
hillkim7 | 0:6c7d76010005 | 47 | " {\"v\": \"1\"}," |
hillkim7 | 0:6c7d76010005 | 48 | " {\"v\": \"2\"}" |
hillkim7 | 0:6c7d76010005 | 49 | " ]" |
hillkim7 | 0:6c7d76010005 | 50 | " }" |
hillkim7 | 0:6c7d76010005 | 51 | "}" |
hillkim7 | 0:6c7d76010005 | 52 | "}"; |
hillkim7 | 0:6c7d76010005 | 53 | |
hillkim7 | 0:6c7d76010005 | 54 | std::string err; |
hillkim7 | 0:6c7d76010005 | 55 | parse(demo, jsonsoure, jsonsoure + strlen(jsonsoure), &err); |
hillkim7 | 0:6c7d76010005 | 56 | printf("res error? %s\r\n", err.c_str()); |
hillkim7 | 0:6c7d76010005 | 57 | |
hillkim7 | 0:6c7d76010005 | 58 | printf("id =%s\r\n", demo["menu"]["id"].get<string>().c_str()); |
hillkim7 | 0:6c7d76010005 | 59 | |
hillkim7 | 0:6c7d76010005 | 60 | for (int i = 0; i < demo["menu"]["popup"]["menuitem"].size(); ++i) { |
hillkim7 | 0:6c7d76010005 | 61 | MbedJSONValue &ele = demo["menu"]["popup"]["menuitem"][i]; |
hillkim7 | 0:6c7d76010005 | 62 | const string &s = ele["v"].get<string>(); |
hillkim7 | 0:6c7d76010005 | 63 | |
hillkim7 | 0:6c7d76010005 | 64 | printf("menu item value =%s\r\n",s.c_str()); |
hillkim7 | 0:6c7d76010005 | 65 | } |
hillkim7 | 0:6c7d76010005 | 66 | |
hillkim7 | 0:6c7d76010005 | 67 | printf("serialized content = %s\r\n" , demo.serialize().c_str()); |
hillkim7 | 0:6c7d76010005 | 68 | } |
hillkim7 | 0:6c7d76010005 | 69 | |
hillkim7 | 0:6c7d76010005 | 70 | int main() { |
hillkim7 | 0:6c7d76010005 | 71 | printf("Starting MbedJSON\r\n"); |
hillkim7 | 0:6c7d76010005 | 72 | printf(">>> parsing \r\n"); |
hillkim7 | 0:6c7d76010005 | 73 | parse(); |
hillkim7 | 0:6c7d76010005 | 74 | printf(">>> serializing \r\n"); |
hillkim7 | 0:6c7d76010005 | 75 | serialize(); |
hillkim7 | 0:6c7d76010005 | 76 | printf(">>> advanced parsing \r\n"); |
hillkim7 | 0:6c7d76010005 | 77 | advanced(); |
hillkim7 | 0:6c7d76010005 | 78 | printf("Ending MbedJSON\r\n"); |
hillkim7 | 0:6c7d76010005 | 79 | } |