Skip to content

status-im/nim-json-serialization

Repository files navigation

nim-json-serialization

License: Apache License: MIT Stability: experimental Github action

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 JsonValueRef node type for DOM-style access to parsed document
    • Flat JsonString type for passing nested JSON documents between abstraction layers
    • Seamless interoperability with std/json and JsonNode
  • 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

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

or

at your option. These files may not be copied, modified, or distributed except according to those terms.

About

Flexible JSON serialization not relying on run-time type information

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHEv2
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published

Contributors 16

Languages