go-jsonschema
json5-spec
go-jsonschema | json5-spec | |
---|---|---|
2 | 7 | |
513 | 49 | |
- | - | |
9.1 | 2.2 | |
7 days ago | almost 1 year ago | |
Go | HTML | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
go-jsonschema
-
Building a high performance JSON parser
For json schema specifically there are some tools like go-jsonschema[1] but I've never used them personally. But you can use something like ffjson[2] in go to generate a static serialize/deserialize function based on a struct definition.
[1] https://github.com/omissis/go-jsonschema
-
JSON Schema generator
What I have tried: https://github.com/atombender/go-jsonschema gave that a spin and wasn't able to generate any successful types from the few items under objects I tried.
json5-spec
- Building a high performance JSON parser
-
TySON: a native go library that lets you use TypeScript as an embedded configuration language without depending on Node or V8
One of the larger issues I've run into is duplicates. Douglas Crockford, JSON's inventor, tried to fix the duplicate issue but it was decided it was too late. Although Douglas Crockford couldn't change the spec forcing all implementations to error on duplicate, his Java JSON implementation errors on duplicates. Others use last-value-wins, support duplicate keys, or other non-standard behavior. The JSON RFC states that implementations should not allow duplicate keys, notes the varying behavior of existing implementations, and states that when names are not unique, "the behavior of software that receives such an object is unpredictable." Duplicate fields are a security issue, a source of bugs, and a surprising behavior to users. See the article, "An Exploration of JSON Interoperability Vulnerabilities" Disallowing duplicates conforms to the small I-JSON RFC, which is a stricter JSON. The author of I-JSON, Tim Bray, is also the author of JSON RFC 8259. See also the JSON5 duplicate issue.
- JavaScript Gom Jabbar
-
SQLite Release 3.42.0
Virtually any sequence is not the same as adopting a specification five years after it’s been published and adopted by industry: https://spec.json5.org/
I appreciate that SQLite can’t write the format, because those changes are human afordances
-
The yaml document from hell
That's why you pick a superset of JSON that already has some adoption, like JSON5: https://spec.json5.org/
-
Don't Pickle Your Data
The "dual" standard RFC 8259 [1] (both are normative standards under their respective bodies, ECMA and IETF) is also a useful comparison here. It's wording is a bit stronger than ECMA's, though not by much. ("Good interoperability" is its specific call out.)
It's also interesting that the proposed JSON 5 (standalone) specification [2] doesn't seem to address it at all (but does add back in the other IEEE 754 numbers that ECMA 404 and RFC 8259 exclude from JSON; +/-Infinity and +/-NaN). It both maintains that its numbers are "arbitrary precision" but also requires these few IEEE 754 features, which may be even more confusing than either ECMA 404 or RFC 8259.
[1] https://datatracker.ietf.org/doc/html/rfc8259#section-6
[2] https://spec.json5.org/#numbers
-
JSON Creator Douglas Crockford Interview
For anyone coming back to this, I just wrote a small proposal to define JSON5 duplicate object name behavior. I'd love any support on the issue:
https://github.com/json5/json5-spec/issues/38
What are some alternatives?
ocsf-schema - OCSF Schema
aqua - Declarative CLI Version manager written in Go. Support Lazy Install, Registry, and continuous update with Renovate. CLI version is switched seamlessly
ffjson - faster JSON serialization for Go
tyson - 🥊 TypeScript as a Configuration Language. TySON stands for TypeScript Object Notation
graphql-go-tools - GraphQL Router / API Gateway framework written in Golang, focussing on correctness, extensibility, and high-performance. Supports Federation v1 & v2, Subscriptions & more.
jsb - Fast json <=> binary serializer library for C
jsoncut
lua-sandbox - A lua sandbox for executing non-trusted code
sonic - A blazingly fast JSON serializing & deserializing library
parcel - The zero configuration build tool for the web. 📦🚀
muon - µON - a compact and simple binary object notation