- 
                Notifications
    
You must be signed in to change notification settings  - Fork 38
 
Open
Description
I have a situation where JSON strings omit default values. For instance in the code below, if interval is omitted or less than 0, it should be set to 100. What can I do with dumpHook/skipHook to omit default values when I serialize my objects?
import jsony, std/json, std/unittest
type
  Thing = object
    name*: string
    interval*: int
proc newHook*(x: var Thing) =
  if x.interval == 0:
    x.interval = 100
test "defaultvalue":
  let original = """{"name":"bob"}"""
  let thing = original.fromJson(Thing)
  check thing.interval == 100
  let serialized = thing.toJson()
  check parseJson(serialized) == parseJson(original)
test "specificvalue":
  let original = """{"name":"bob", "interval": 200}"""
  let thing = original.fromJson(Thing)
  check thing.interval == 200
  let serialized = thing.toJson()
  check parseJson(serialized) == parseJson(original)The output of the above is:
parseJson(serialized) was {"name":"bob","interval":100}
parseJson(original) was {"name":"bob"}
[FAILED] defaultvalue
[OK] specificvalue
Metadata
Metadata
Assignees
Labels
No labels