"description": "Fast, secure JSON library with tight ZIO integration.",
"fullName": "zio/zio-json",
"homepage": "https://zio.dev/zio-json",
"language": "Scala",
"name": "zio-json",
"pushedAt": "2025-11-26T01:59:21Z",
"stargazersCount": 427,
"topics": [
"json",
"performance",
"scala",
"security",
"zio"
],
"updatedAt": "2025-11-25T02:54:11Z",
"url": "https://github.com/zio/zio-json"
}
[//] !: # (This file was autogenerated using zio-sbt-website plugin via sbt generateReadme command.)
[//] !: # (So please do not edit it manually. Instead, change “docs/index.md” file or sbt setting keys)
[//] !: # (e.g. “readmeDocumentation” and “readmeSupport”.)
High performance is achieved by decoding JSON directly from the input source into business objects. See benchmark results of throughput and allocation rate for synthetic and real-world message samples in comparison with other JSON parsers here.
Best in class security is achieved with an aggressive early exit strategy that avoids costly stack traces, even when parsing malformed numbers. Malicious (and badly formed) payloads are rejected before finishing reading.
Fast compilation and future-proofing is possible thanks to Magnolia which allows us to generate boilerplate in a way that will survive the exodus to Scala 3. zio-json is internally implemented using a java.io.Reader / java.io.Writer-like interface, which is making a comeback to center stage in Loom.
Simplicity is achieved by using well-known software patterns and avoiding bloat. The only requirement to use this library is to know about Scala’s encoding of typeclasses, described in Functional Programming for Mortals.
Helpful errors are produced in the form of a jq query, with a note about what went wrong, pointing to the exact part of the payload that failed to parse.