summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorDominik Picheta <dominikpicheta@googlemail.com>2018-02-12 09:22:35 +0000
committerGitHub <noreply@github.com>2018-02-12 09:22:35 +0000
commit23d272f6521db458813714cd89a14869c4754d02 (patch)
tree33165994acd59b4b5d6c53e5db29d86abb66eb15
parenta4deceb13479c370f9d642e17facd92a1146a874 (diff)
parent82473238602a1fff3befe79d463f193a16a2bad5 (diff)
downloadNim-23d272f6521db458813714cd89a14869c4754d02.tar.gz
Merge pull request #7205 from GULPF/json-to-fix
Fix `json.to` for types with generic parameters
-rw-r--r--lib/pure/json.nim2
-rw-r--r--tests/stdlib/tjsonmacro.nim9
2 files changed, 9 insertions, 2 deletions
diff --git a/lib/pure/json.nim b/lib/pure/json.nim
index b5b84863a..bbde4db5f 100644
--- a/lib/pure/json.nim
+++ b/lib/pure/json.nim
@@ -1896,7 +1896,7 @@ macro to*(node: JsonNode, T: typedesc): untyped =
   ##     doAssert data.person.age == 21
   ##     doAssert data.list == @[1, 2, 3, 4]
 
-  let typeNode = getType(T)
+  let typeNode = getTypeInst(T)
   expectKind(typeNode, nnkBracketExpr)
   doAssert(($typeNode[0]).normalize == "typedesc")
 
diff --git a/tests/stdlib/tjsonmacro.nim b/tests/stdlib/tjsonmacro.nim
index 2cdd82305..a69b03426 100644
--- a/tests/stdlib/tjsonmacro.nim
+++ b/tests/stdlib/tjsonmacro.nim
@@ -380,4 +380,11 @@ when isMainModule:
     let dataDeser = to(dataParsed, Test1)
     doAssert dataDeser.a == 1
     doAssert dataDeser.f == 6
-    doAssert dataDeser.i == 9.9'f32
\ No newline at end of file
+    doAssert dataDeser.i == 9.9'f32
+  
+  # deserialize directly into a table
+  block:
+    let s = """{"a": 1, "b": 2}"""
+    let t = parseJson(s).to(Table[string, int])
+    doAssert t["a"] == 1
+    doAssert t["b"] == 2
\ No newline at end of file