diff options
author | Dominik Picheta <dominikpicheta@gmail.com> | 2017-11-29 20:30:40 +0000 |
---|---|---|
committer | Dominik Picheta <dominikpicheta@googlemail.com> | 2017-11-30 21:34:30 +0000 |
commit | 8187e83645bbc9d536eebfab2af3b2437c3485fb (patch) | |
tree | 3b1a8c8c2043799da89db5fd656d13a1a6d932d5 /tests/stdlib/tjsonmacro.nim | |
parent | 8ca41ce637106c734cd819a1f49606db880cf075 (diff) | |
download | Nim-8187e83645bbc9d536eebfab2af3b2437c3485fb.tar.gz |
Implement Table/OrderedTable support for json.to macro.
Diffstat (limited to 'tests/stdlib/tjsonmacro.nim')
-rw-r--r-- | tests/stdlib/tjsonmacro.nim | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/tests/stdlib/tjsonmacro.nim b/tests/stdlib/tjsonmacro.nim index f9f94606c..01fa43aa7 100644 --- a/tests/stdlib/tjsonmacro.nim +++ b/tests/stdlib/tjsonmacro.nim @@ -2,7 +2,7 @@ discard """ file: "tjsonmacro.nim" output: "" """ -import json, strutils, options +import json, strutils, options, tables when isMainModule: # Tests inspired by own use case (with some additional tests). @@ -315,5 +315,28 @@ when isMainModule: doAssert noYearDeser.year.isNone doAssert noYearDeser.engine.name == "V8" - # TODO: Table[T, Y] support. + # Table[T, Y] support. + block: + type + Friend = object + name: string + age: int + + Dynamic = object + name: string + friends: Table[string, Friend] + + let data = """ + {"friends": { + "John": {"name": "John", "age": 35}, + "Elizabeth": {"name": "Elizabeth", "age": 23} + }, "name": "Dominik"} + """ + + let dataParsed = parseJson(data) + let dataDeser = to(dataParsed, Dynamic) + doAssert dataDeser.name == "Dominik" + doAssert dataDeser.friends["John"].age == 35 + doAssert dataDeser.friends["Elizabeth"].age == 23 + # TODO: JsonNode support \ No newline at end of file |