Skip to content

Commit d890b52

Browse files
committed
Add rename Hook.
1 parent 734b4ec commit d890b52

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

src/jsony.nim

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,8 @@ proc parseJson[T:object|ref object](s: string, i: var int, v: var T) =
244244
var key: string
245245
parseJson(s, i, key)
246246
eat(s, i, ':')
247+
when compiles(renameHook(v, key)):
248+
renameHook(v, key)
247249
fieldsMacro(v, key)
248250
eatSpace(s, i)
249251
if s[i] == ',':

tests/test_objects.nim

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,3 +144,13 @@ block:
144144
var s = "null"
145145
var v = fromJson[Entry6](s)
146146
doAssert v == nil
147+
148+
type Node = ref object
149+
kind: string
150+
151+
proc renameHook(v: var Node, fieldName: var string) =
152+
if fieldName == "type":
153+
fieldName = "kind"
154+
155+
var node = fromJson[Node]("""{"type":"root"}""")
156+
doAssert node.kind == "root"

0 commit comments

Comments
 (0)