This commit is contained in:
flywind
2020-11-02 17:22:26 +08:00
committed by GitHub
parent 27eb19cc48
commit 919593395c
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)