mirror of
https://github.com/status-im/nim-json-serialization
synced 2026-01-02 16:24:47 +00:00
No description
| .github/workflows | ||
| docs | ||
| fuzzer | ||
| json_serialization | ||
| tests | ||
| .gitignore | ||
| config.nims | ||
| json_serialization.nim | ||
| json_serialization.nimble | ||
| LICENSE-APACHEv2 | ||
| LICENSE-MIT | ||
| README.md | ||
nim-json-serialization
Introduction
nim-json-serialization is a library in the nim-serialization family for turning Nim objects into JSON documents and back. Features include:
- Efficient coding of JSON documents directly to and from Nim data types
- Full type-based customization of both parsing and formatting
- Flavors for defining multiple JSON serialization styles per Nim type
- Efficient skipping of tags and values for partial JSON parsing
- Flexibility in mixing type-based and dynamic JSON access
- Structured
JsonValueRefnode type for DOM-style access to parsed document - Flat
JsonStringtype for passing nested JSON documents between abstraction layers - Seamless interoperability with
std/jsonandJsonNode
- Structured
- Full RFC8259 spec compliance including the notorious JSON number
- Passes JSONTestSuite
- Customizable parser strictness including support for non-standard extensions
- Well-defined handling of malformed / malicious inputs with configurable parsing limits
- Fuzzing and comprehensive manual test coverage
- Since v0.4.4, compile time encode/decode is supported. This means you can initialize a const value using decode. It is also ok to use it inside a static block or other Nim VM code.
Getting started
requires "json_serialization"
Create a type and use it to encode and decode JSON:
import json_serialization
type Request = object
jsonrpc: string
`method`: string
let
json = """{"jsonrpc": "2.0", "method": "name"}"""
decoded = Json.decode(json, Request)
echo decoded.jsonrpc
echo Json.encode(decoded, pretty=true)
Documentation
See the user guide.
Contributing
Contributions are welcome - please make sure to add test coverage for features and fixes!
json_serialization follows the Status Nim Style Guide.
License
Licensed and distributed under either of
- MIT license: LICENSE-MIT or http://opensource.org/licenses/MIT
or
- Apache License, Version 2.0, (LICENSE-APACHEv2 or http://www.apache.org/licenses/LICENSE-2.0)
at your option. These files may not be copied, modified, or distributed except according to those terms.