mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-17 00:24:16 +00:00
jsonutils.jsonTo: support opt (#16739)
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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]()): "[]"
|
||||
|
||||
Reference in New Issue
Block a user