package yojson
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=656fc65f794186274f8b961dc38daba9e2de2fc993829291defbda2186812cc6
md5=b89d39ca3f8c532abe5f547ad3b8f84d
Description
Yojson is an optimized parsing and printing library for the JSON format.
It addresses a few shortcomings of json-wheel including 2x speedup, polymorphic variants and optional syntax for tuples and variants.
ydump is a pretty-printing command-line program provided with the yojson package.
The program atdgen can be used to derive OCaml-JSON serializers and deserializers from type definitions.
Published: 15 Feb 2019
README
Yojson: low-level JSON library for OCaml
This library is for manipulating the json AST directly. For mapping between OCaml types and json, we recommend atdgen.
Library documentation
Currently at https://ocaml-community.github.io/yojson/
Design goals
reducing inter-package dependencies by the use of polymorphic variants for the JSON tree type
allowing variants of the JSON tree type to be shipped by the library itself or to be easily created as extensions of the library
allowing type-aware serializers/deserializers such as json-static to read and write directly without going through a JSON tree, for efficiency purposes. This requires making readers and writers of JSON atoms (int, string, etc.) to be exported and composable.
providing a few non-standard, optional extensions of JSON. These extensions will include:
optional quotes around "simple" field/constructor names
a syntax for tuples (at least 2 elements):
(x, y)
a syntax for variants (0 or 1 arg only):
<Foo> <Bar:"abc">
Other choices already in json-wheel
distinction between ints and floats (optional)
Getting rid of the UTF-X encoding constraint that prevents from exchanging binary data:
encoding is ASCII except for the contents of string literals
string literals may represent arbitrary sequence of bytes
\uABCD
escapes in string literals expand to UTF-8
Miscellaneous
no dependency on ocamlnet for UTF-8
Dependencies (5)
-
biniou
>= "1.2.0"
- easy-format
-
cppo
build
- dune
-
ocaml
>= "4.02.3"
Dev Dependencies (1)
-
alcotest
with-test & >= "0.8.5"
- 0install
-
acgtk
>= "1.3.2"
- apero-core
- apero-net
- archetype
-
atd
>= "2.6.0"
-
atdgen
< "2.10.0"
-
atdgen-runtime
< "2.10.0"
- avro-compiler
-
aws
< "1.0.0"
- aws-config
-
aws-s3
>= "1.1.0" & < "4.5.1" | >= "4.8.0"
- awsm-codegen
- bap-radare2
- bitcoin
- boulangerie
-
builder-web
>= "0.2.0"
- caisar
- calculon
- calculon-redis-lib
-
camelot
>= "1.3.0"
- camels
- canary
- cb-check
- cbor
- cconv-ppx
- colibrics
- comby
- comby-kernel
- comby-semantic
- commons
-
containers
>= "3.9"
- coq-lsp
- coq-of-ocaml
-
coq-serapi
>= "8.10.0+0.7.0" & < "8.20.0+0.20.0"
- current_docker
-
current_examples
>= "0.4"
- current_git
- current_github
- current_gitlab
- current_slack
- current_ssh
-
current_web
>= "0.4"
- cwe_checker
- dap
-
datakit-ci
>= "0.12.3"
- daypack-lib
- dblp-api
- decoders-yojson
- deriving-yojson
-
devkit
>= "0.4"
- docker-api
- docker_hub
-
dot-merlin-reader
!= "4.4~5.0.preview" & < "4.6"
- dream
-
dropbox
>= "0.2"
-
dune-release
>= "1.4.0"
-
earlybird
< "1.0.0"
- esgg
-
facebook-sdk
< "0.3.1"
- fiat-p256
-
frama-c
>= "19.0"
- fred
-
frenetic
>= "3.2.0"
-
fstar
>= "0.9.3.0-beta1"
- gapi-ocaml
-
gdbprofiler
>= "0.2"
-
gemini
< "0.3.0"
-
gen-bs
>= "0.1.0"
- github
- github-data
- gitlab
-
goblint-cil
>= "1.8.0"
-
gopcaml-mode-merlin
< "0.0.6"
- graphql
-
graphql-async
>= "0.14.0"
-
graphql-cohttp
>= "0.13.0"
-
graphql-lwt
>= "0.14.0"
- graphql_ppx
- gremlin
- h2
- hacl_x25519
-
hilite
< "0.3.0"
- hl_yaml
- hockmd
- horned_worm
- hpack
- hsluv
- httph
- index-bench
- iocaml
- iocaml-kernel
- ip2location
- ip2locationio
-
irmin-bench
< "3.0.0"
-
irmin-graphql
>= "2.2.0"
- irmin-tezos
- jasmin
- jhupllib
- jose
-
js_of_ocaml
= "2.8.4"
- js_of_ocaml-compiler
- json-pointer
- json-predicate
- json-rpc
- json_decoder
- jsondiff
-
jsonrpc
< "1.6.0"
- jsonschema2atd
- jupyter
- jupyter-kernel
- jwt
- jwto
-
KaSim
>= "4.0.0"
-
kappa-library
< "4.1.3"
- karamel
- ketrew
- kind2
-
kremlin
< "transition"
- kubecaml
-
lablgtk3-extras
>= "3.0.1"
- lablqt
- lambda-runtime
-
lambdapi
>= "2.0.0"
- learn-ocaml
- letsencrypt
- letters
- libsail
-
linol
>= "0.2"
- linol-eio
- linol-lwt
- lsp
-
melange-json
= "1.2.0"
- melange-json-native
-
merlin
!= "3.8.0" & < "4.6-412"
- merlin-acme
- mezzo
-
minimal
>= "1.1.0"
- mirage-crypto-ec
- monorobot
- mopsa
- morbig
- netml
- nloge
-
nsq
>= "0.2.4"
- obuilder
- ocaml-gist
- ocaml-lsp-server
-
ocaml-protoc-plugin
>= "6.1.0"
- ocaml-protoc-yojson
- ocaml-webworker
- ocaml_db_model
- ocaml_pgsql_model
- ocf
-
oclaunch
< "0.2.1"
- ocsigen-start
-
odoc
>= "2.0.0"
- oframl
- ogen
- oidc
-
ojs-base
!= "0.2.0"
- ojs_base
-
ometrics
< "0.2.0"
-
opam2web
>= "2.0"
- openai-gym
-
openapi
< "1.0.0"
- openapi_router
- openstellina
-
opium
>= "0.19.0"
- oraft
- orun
- osh
- ozulip
- pa_ppx
- pbrt_yojson
- pds-reachability
- petr4
-
phylogenetics
>= "0.2.0"
-
pkcs11
>= "0.9.0" & < "1.0.0"
-
pkcs11-driver
>= "1.0.0"
- plist
- podge
- ppx_deriving_jsonschema
-
ppx_deriving_protocol
< "0.8.1"
-
ppx_deriving_yojson
>= "3.4"
- ppx_graphql
- ppx_json_types
-
ppx_protocol_conv
= "2.0.0"
-
ppx_protocol_conv_json
>= "3.1.3"
- ppx_yojson
-
ppx_yojson_conv
< "v0.13.0"
- ppx_yojson_conv_lib
- prof_spacetime
- qmp
- quests
- r2pipe
- radare2
-
rdf
>= "0.9.0" & < "1.0.0"
- records
- repr-bench
-
rpc
= "2.2.0"
- rpclib
- rubytt
- rungen
- SZXX
- safemoney
-
sail
< "0.15"
- satyrographos
- semver2
- sentry
-
sihl
< "0.2.0" | >= "0.3.0~rc2"
- sihl-core
- slack
- slacko
- slug
-
smtml
>= "0.2.2"
- sparrow
- sphinxcontrib-ocaml
- spotify-web-api
- stitch
- swagger
-
tdigest
< "2.1.0"
- telegraml
- testrunner
-
textmate-language
>= "0.3.0"
- textrazor
- tezos-context-hash-irmin
- themoviedb
- tidy_email_sendgrid
-
timedesc
< "0.8.0"
- timedesc-json
-
timere
< "0.4.0"
- transmission-rpc
- u2f
- usbmux
- user-agent-parser
- vecosek
- vecosek-scene
- vercel
- vscoq-language-server
-
wamp
< "1.0"
- wamp-yojson
- webauthn
- why3find
-
xapi-rrd
>= "1.9.0"
- zarr
Conflicts
None