guardrail
circe
Our great sponsors
guardrail | circe | |
---|---|---|
2 | 12 | |
513 | 2,473 | |
1.2% | 0.4% | |
9.4 | 7.4 | |
7 days ago | 5 days ago | |
Scala | Scala | |
MIT License | Apache License 2.0 |
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.
guardrail
-
Ask HN: Why is there no specification for Command Line Interfaces?
What's the use case? I was thinking about this exact issue because my product ships several CLI tools, but I wasn't convinced it would be worth the effort.
An OpenAPI specification describes an HTTP interface, and I see it as useful because it makes it easier to write code in language-of-choice to generate HTTP requests (by generating client libraries from the OpenAPI spec).
For a CLI, the interface is the command-line. Usually people type these commands, or they end up in bash scripts, or sometimes they get called from programming language of choice by shelling out to the CLI. So I could see a use case for a CLI spec, which would make it easier to generate client libraries (which would shell out to the CLI)... but it seems a little niche.
Or maybe, as input to a documentation tool (like Swagger docs). I would imagine if you're using a CLI library like Python's Click, most of that data is already there. Click Parameters documentation: https://click.palletsprojects.com/en/8.1.x/parameters/
Or maybe, you could start from the spec and then generate code which enforces it. So any changes pass through the spec, which would make it easy to write code (server and client-side) / documentation / changelogs. Some projects like this: Guardrail (Scala) https://github.com/guardrail-dev/guardrail , and Connexion (Python) https://github.com/spec-first/connexion .
But without this ecosystem of tooling, documenting your CLI in a specification didn't really seem worth the effort. Of course, that's a bootstrapping problem.
-
Scala Library To Generate Case Classes for JSON
You may have some luck with Guardrail https://github.com/guardrail-dev/guardrail/
circe
-
Database abstraction library which allows a clean domain model
Using Circe so I define some classes that contain my custom Encoder[BusinessObject] in a file and I use that whenever I want to save/store a record, or handle a web request or respose. I also represent my mongo queries as JSON objects that I can freely build then pass to the driver.
- Scala Library To Generate Case Classes for JSON
-
What companies/startups are using Scala (open source projects on github)?
Circe adopters should be using Scala https://github.com/circe/circe
-
what popular companies uses Scala?
If you look at Circe's github repo you will see a very large list of very recognizable companies, that should give you some idea. Circe isn't the ONLY Json parsing library, but it is probably the most popular, so - should give you a rough idea of the types and variety of companies using Scala.
-
Every time I sit down to use an HTTP client and JSON parser, I get really frustrated
Has the worst error messages I've ever seen for a parser. "Attempt to decode value on failed cursor" is not helpful when all you have is missing fields. Has been an issue for 5 years.
-
It's unsafe to depend on Typelevel Libraries
Circe tries to drop Scala 2.12 support in retaliation for not enough users paying them.
-
Building a REST API in Scala 3 using Iron and Cats
Circe: https://circe.github.io/circe/
-
[Circe] Renaming fields for value classes during decoding
PR for the same functionality in Scala3: https://github.com/circe/circe/pull/1800
-
Scala 3.0 serialization
Otherwise I tend to just use ZIO-JSON or Circe both of which have been updated for Scala 3.
-
Performance of 12 JSON parsers for Scala
I've updated results of benchmarks of 12 JSON parsers for Scala: - AVSystem's scala-commons - Borer - Circe - DSL-JSON - Jackson - jsoniter-scala - Play-JSON, - play-json-jsoniter - Spray-JSON - uPickle - weePickle - zio-json
What are some alternatives?
typespec
json4s - JSON library
natchez-akka-http - A tiny integration library between Natchez and Akka Http
spray-json - A lightweight, clean and simple JSON implementation in Scala
scala-jsonschema - Scala JSON Schema
play-json
karma-plus-plus - http://karmaplusplus.com
zio-json - Fast, secure JSON library with tight ZIO integration.
rad4s - A set of utilities to speed up rendering, storage, testing, and prototyping, especially for http4s
jackson-module-scala - Add-on module for Jackson (https://github.com/FasterXML/jackson) to support Scala-specific datatypes
iron-cats-example - An example project using Iron & Cats
jsoniter-scala - Scala macros for compile-time generation of safe and ultra-fast JSON codecs