@@ -1227,6 +1227,26 @@ proc parseJson[T: object|ref object](parser: var JsonParser, v: var T) =
12271227 else :
12281228 parser.error (unexpectedToken % [$ parser.curr.kind])
12291229
1230+ proc parseJson [T](parser: var JsonParser , v: var seq [T]) =
1231+ # # Parse a JSON array into a Nim seq.
1232+ parser.parseHook (v)
1233+
1234+ proc parseJson (parser: var JsonParser , v: var bool ) =
1235+ # # Parse a JSON boolean.
1236+ parser.parseHook (v)
1237+
1238+ proc parseJson (parser: var JsonParser , v: var string ) =
1239+ # # Parse a JSON string.
1240+ parser.parseHook (v)
1241+
1242+ proc parseJson [T: SomeInteger ](parser: var JsonParser , v: var T) =
1243+ # # Parse a JSON integer.
1244+ parser.parseHook (v)
1245+
1246+ proc parseJson [T: SomeFloat ](parser: var JsonParser , v: var T) =
1247+ # # Parse a JSON float.
1248+ parser.parseHook (v)
1249+
12301250proc parseJson (parser: var JsonParser , v: var JsonNode ) =
12311251 # Parse a JSON value into a JsonNode, handling objects and arrays recursively.
12321252 case parser.curr.kind
@@ -1239,13 +1259,13 @@ proc parseJson(parser: var JsonParser, v: var JsonNode) =
12391259
12401260macro fromJsonMacro (x: typed , str: typed ): untyped =
12411261 # macro to parse JSON string `str` into object of type `x`
1242- var objIdent = x.getTypeImpl ()[1 ]
1262+ var t = x.getTypeInst ()[1 ]
12431263 var
12441264 blockStmtList = newStmtList ()
12451265 blockStmtId = genSym (nskLabel, " voodoo" )
12461266 add blockStmtList, quote do :
12471267 var
1248- tmp = `objIdent` ()
1268+ tmp: `t`
12491269 parser = JsonParser (lexer: newJsonLexer (`str`))
12501270 parser.curr = parser.nextToken ()
12511271 parser.next = parser.nextToken ()
0 commit comments