(cherry picked from commit 919593395c)
This commit is contained in:
flywind
2020-11-02 17:22:26 +08:00
committed by narimiran
parent e0aa7cf09b
commit 2e35621af0
2 changed files with 20 additions and 1 deletions

View File

@@ -1120,7 +1120,10 @@ when defined(nimFixedForwardGeneric):
proc initFromJson[T](dst: var Option[T]; jsonNode: JsonNode; jsonPath: var string) =
if jsonNode != nil and jsonNode.kind != JNull:
dst = some(default(T))
when T is ref:
dst = some(new(T))
else:
dst = some(default(T))
initFromJson(dst.get, jsonNode, jsonPath)
macro assignDistinctImpl[T: distinct](dst: var T;jsonNode: JsonNode; jsonPath: var string) =

16
tests/stdlib/toptions.nim Normal file
View File

@@ -0,0 +1,16 @@
discard """
output: '''{"foo":{"test":"123"}}'''
"""
import json, options
type
Foo = ref object
test: string
Test = object
foo: Option[Foo]
let js = """{"foo": {"test": "123"}}"""
let parsed = parseJson(js)
let a = parsed.to(Test)
echo $(%*a)