Skip to content

Commit 4394b34

Browse files
committed
json - add the missing parseJson overloads
Signed-off-by: George Lemon <georgelemon@protonmail.com>
1 parent 15399f3 commit 4394b34

1 file changed

Lines changed: 22 additions & 2 deletions

File tree

src/openparser/json.nim

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
12301250
proc 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

12401260
macro 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

Comments
 (0)