mirror of
https://github.com/logos-storage/nim-json-rpc.git
synced 2026-05-27 21:09:32 +00:00
serialization for tuples - just like for objects
This commit is contained in:
parent
271512c161
commit
8c1a8ef8d9
@ -42,7 +42,7 @@ proc fromJson*[T: enum](n: JsonNode, argName: string, result: var T) =
|
|||||||
result = n.getInt().T
|
result = n.getInt().T
|
||||||
|
|
||||||
# This can't be forward declared: https://github.com/nim-lang/Nim/issues/7868
|
# This can't be forward declared: https://github.com/nim-lang/Nim/issues/7868
|
||||||
proc fromJson*[T: object](n: JsonNode, argName: string, result: var T) =
|
proc fromJson*[T: object|tuple](n: JsonNode, argName: string, result: var T) =
|
||||||
n.kind.expect(JObject, argName)
|
n.kind.expect(JObject, argName)
|
||||||
for k, v in fieldPairs(result):
|
for k, v in fieldPairs(result):
|
||||||
if v is Option and not n.hasKey(k):
|
if v is Option and not n.hasKey(k):
|
||||||
@ -50,6 +50,13 @@ proc fromJson*[T: object](n: JsonNode, argName: string, result: var T) =
|
|||||||
else:
|
else:
|
||||||
fromJson(n[k], k, v)
|
fromJson(n[k], k, v)
|
||||||
|
|
||||||
|
# same as `proc `%`*[T: object](o: T): JsonNode` in json.nim from the stdlib
|
||||||
|
# TODO this PR removes the need for this: https://github.com/nim-lang/Nim/pull/14638
|
||||||
|
proc `%`*[T: tuple](o: T): JsonNode =
|
||||||
|
## Construct JsonNode from tuples and objects.
|
||||||
|
result = newJObject()
|
||||||
|
for k, v in o.fieldPairs: result[k] = %v
|
||||||
|
|
||||||
proc fromJson*[T](n: JsonNode, argName: string, result: var Option[T]) =
|
proc fromJson*[T](n: JsonNode, argName: string, result: var Option[T]) =
|
||||||
# Allow JNull for options
|
# Allow JNull for options
|
||||||
if n.kind != JNull:
|
if n.kind != JNull:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user