Skip to content

Commit

Permalink
jsonutils.jsonTo: support opt (#16739)
Browse files Browse the repository at this point in the history
  • Loading branch information
timotheecour authored Jan 17, 2021
1 parent 44ceefa commit 6c07b0a
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 4 deletions.
6 changes: 4 additions & 2 deletions changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@
literals remain in the "raw" string form so that client code can easily treat
small and large numbers uniformly.

- Added `BackwardsIndex` overload for `JsonNode`.

- added `jsonutils.jsonTo` overload with `opt = Joptions()` param.

- Added an overload for the `collect` macro that inferes the container type based
on the syntax of the last expression. Works with std seqs, tables and sets.

Expand Down Expand Up @@ -89,8 +93,6 @@
- Added `posix_utils.osReleaseFile` to get system identification from `os-release` file on Linux and the BSDs.
https://www.freedesktop.org/software/systemd/man/os-release.html

- Added `BackwardsIndex` overload for `JsonNode`.

- `math.round` now is rounded "away from zero" in JS backend which is consistent
with other backends. see #9125. Use `-d:nimLegacyJsRound` for previous behavior.
- Added `socketstream` module that wraps sockets in the stream interface
Expand Down
4 changes: 2 additions & 2 deletions lib/std/jsonutils.nim
Original file line number Diff line number Diff line change
Expand Up @@ -244,9 +244,9 @@ proc fromJson*[T](a: var T, b: JsonNode, opt = Joptions()) =
# checkJson not appropriate here
static: doAssert false, "not yet implemented: " & $T

proc jsonTo*(b: JsonNode, T: typedesc): T =
proc jsonTo*(b: JsonNode, T: typedesc, opt = Joptions()): T =
## reverse of `toJson`
fromJson(result, b)
fromJson(result, b, opt)

proc toJson*[T](a: T): JsonNode =
## serializes `a` to json; uses `toJsonHook(a: T)` if it's in scope to
Expand Down
3 changes: 3 additions & 0 deletions tests/stdlib/tjsonutils.nim
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,9 @@ template fn() =
var b: Bar
fromJson(b, parseJson """{"foo": {"b": "bbb"}}""", Joptions(allowExtraKeys: true, allowMissingKeys: true))
doAssert b == Bar(foo: Foo(a: 0, b: "bbb", c: 0.0))
block: # jsonTo with `opt`
let b2 = """{"foo": {"b": "bbb"}}""".parseJson.jsonTo(Bar, Joptions(allowExtraKeys: true, allowMissingKeys: true))
doAssert b2 == Bar(foo: Foo(a: 0, b: "bbb", c: 0.0))

block testHashSet:
testRoundtrip(HashSet[string]()): "[]"
Expand Down

0 comments on commit 6c07b0a

Please sign in to comment.