Skip to content

Commit a40cd7e

Browse files
committed
Fix deserialization of objects with default field values
1 parent 0ce3952 commit a40cd7e

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

src/jsony.nim

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -599,6 +599,7 @@ proc fromJson*[T](s: string, x: typedesc[T]): T =
599599
## * Missing json fields keep their default values.
600600
## * `proc newHook(foo: var ...)` Can be used to populate default values.
601601
var i = 0
602+
result = default(T)
602603
s.parseHook(i, result)
603604
eatSpace(s, i)
604605
if i != s.len:

tests/test_objects.nim

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,15 @@ block:
77
var v = s.fromJson(Entry1)
88
doAssert v.color == ""
99

10+
block:
11+
type Frog = object
12+
legs: int = 4
13+
14+
var s = "{}"
15+
var f = s.fromJson(Frog)
16+
# Make sure the default value is deserialized correctly.
17+
doAssert f.legs == 4
18+
1019
block:
1120
type Foo2 = ref object
1221
field: string

0 commit comments

Comments
 (0)