All Projects → circe → Circe Derivation

circe / Circe Derivation

Fast type class instance derivation for Circe

Programming Languages

scala
5932 projects
macros
77 projects

Labels

Projects that are alternatives of or similar to Circe Derivation

Iso 3166 Countries With Regional Codes
ISO 3166-1 country lists merged with their UN Geoscheme regional codes in ready-to-use JSON, XML, CSV data sets
Stars: ✭ 1,372 (+1206.67%)
Mutual labels:  json
Router
A simple, compact and fast router package to process HTTP requests
Stars: ✭ 102 (-2.86%)
Mutual labels:  json
Object Editor React
Schema-aware editor for structured JSON objects (drop-in React component)
Stars: ✭ 104 (-0.95%)
Mutual labels:  json
Simplejson
simplejson is a simple, fast, extensible JSON encoder/decoder for Python
Stars: ✭ 1,372 (+1206.67%)
Mutual labels:  json
Macholibre
Mach-O & Universal Binary Parser
Stars: ✭ 102 (-2.86%)
Mutual labels:  json
Json2dart
Stars: ✭ 103 (-1.9%)
Mutual labels:  json
Eslint Plugin I18n Json
Fully extendable eslint plugin for JSON i18n translation files.
Stars: ✭ 101 (-3.81%)
Mutual labels:  json
Json Node Normalizer
'json-node-normalizer' - NodeJS module that normalize json data types from json schema specifications.
Stars: ✭ 105 (+0%)
Mutual labels:  json
Circe Yaml
YAML parser for circe using SnakeYAML
Stars: ✭ 102 (-2.86%)
Mutual labels:  json
Facil.io
Your high performance web application C framework
Stars: ✭ 1,393 (+1226.67%)
Mutual labels:  json
Sketch Json Parser
Replaces layer values in groups with JSON data
Stars: ✭ 101 (-3.81%)
Mutual labels:  json
Lychee
The most complete and powerful data-binding library and persistence infra for Kotlin 1.3, Android & Splitties Views DSL, JavaFX & TornadoFX, JSON, JDBC & SQLite, SharedPreferences.
Stars: ✭ 102 (-2.86%)
Mutual labels:  json
Everlayout
Reusable, downloadable, up-datable iOS layouts
Stars: ✭ 103 (-1.9%)
Mutual labels:  json
Jam Api
Parse web pages using CSS query selectors
Stars: ✭ 1,375 (+1209.52%)
Mutual labels:  json
Flickr Sdk
Almost certainly the best Flickr API client in the world for node and the browser
Stars: ✭ 104 (-0.95%)
Mutual labels:  json
Yar
Light, concurrent RPC framework for PHP & C
Stars: ✭ 1,369 (+1203.81%)
Mutual labels:  json
Gitlogg
💾 🧮 🤯 Parse the 'git log' of multiple repos to 'JSON'
Stars: ✭ 102 (-2.86%)
Mutual labels:  json
Json Against Humanity
Finally, Cards Against Humanity as plain text and JSON.
Stars: ✭ 105 (+0%)
Mutual labels:  json
Fastapi Plugins
FastAPI framework plugins
Stars: ✭ 104 (-0.95%)
Mutual labels:  json
Goson
Handle JSON with ease in golang.
Stars: ✭ 103 (-1.9%)
Mutual labels:  json

circe-derivation

Build status Coverage status Gitter Maven Central

This library provides macro-supported derivation of circe's type class instances. It differs from circe-generic in that this derivation is not based on Shapeless's generic representation of case classes and ADTs, and it is not intended to be as fully featured as io.circe.generic. Notably fully automatic derivation is a non-goal. The only targeted remaining feature for parity is constructor renaming.

In return for losing automatic derivation you get a library that has no dependencies apart from circe-core, should compile much more quickly in most cases, and supports some classes that circe-generic doesn't (e.g. Scrooge-generated representations of Thrift structs).

Who is this for?

There are already a lot of ways to define encoders and decoders in circe (or to avoid defining them using fully-automatic derivation). In general users who want to use generic derivation should stick to circe-generic, which is well-tested, robust, and provides a clear path from automatic generic derivation (which can be useful for initial exploration or in relatively simple applications) to semi-automatic derivation (which has some syntactic overhead but tends to compile much more quickly and to be easier to reason about).

Users who want the generic derivation experience but need particular functionality that isn't provided in circe-generic may be interested in circe-generic-extras, which supports transforming member names, using default values, etc. (at the expense of even slower compile times).

This library is for people who don't care about the full generic derivation experience but just want fast builds and instances that stay in sync with their definitions, and who don't mind a bit of boilerplate (a couple of lines per case class).

Note that the io.circe.derivation API is almost identical to io.circe.generic.semiauto, and in many situations it can be used as a drop-in replacement. If you're currently using circe-generic's deriveEncoder and deriveDecoder for case classes, but are still suffering from slow compilation, adding a circe-derivation dependency and switching the imports is probably worth a try.

Contributors and participation

This project supports the Scala code of conduct and we want all of its channels (Gitter, GitHub, etc.) to be welcoming environments for everyone.

Please see the circe contributors' guide for details on how to submit a pull request.

License

circe-derivation is licensed under the Apache License, Version 2.0 (the "License"); you may not use this software except in compliance with the License.

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].