Skip to content

logicblocks/jason

 
 

Repository files navigation

jason

Clojars Project Clojars Downloads GitHub Contributors

JSON encoding and decoding function construction with support for configurable key conversion.

Supports:

  • configuration of all key conversions
  • preservation of metadata fields (e.g., as in HAL) during conversion

Includes convenience coders for wire (i.e., service to service) JSON and database JSON:

For wire JSON:

  • converts from kebab-case keywords to camelCase JSON and back again

For database JSON:

  • converts from kebab-case keywords to snake_case JSON and back again

Install

Add the following to your project.clj file:

[io.logicblocks/jason "1.0.0"]

Documentation

Usage

(require '[jason.core :refer [defcoders] :as jason])
(require '[camel-snake-kebab.core :refer [->snake_case_string
                                          ->snake_case_keyword]])

(defcoders standard)
(defcoders db
  :encode-key-fn (jason/->encode-key-fn ->snake_case_string)
  :decode-key-fn (jason/->decode-key-fn ->snake_case_keyword))

(->standard-json {:first-name "Jess"})
;; => "{\"first-name\": \"Jess\"}"

(->db-json {:first-name "Jess"})
;; => "{\"first_name\": \"Jess\"}"

(<-standard-json "{\"firstName\": \"Jess\"}")
;; => {"firstName" "Jess"}

(<-db-json "{\"first_name\": \"Jess\"}")
;; => {:first_name "Jess"}

See the Getting Started guide for more details.

License

Copyright © 2023 LogicBlocks Maintainers

Distributed under the terms of the MIT License.

About

Factory functions around jsonista, mostly for key conversion.

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Clojure 74.9%
  • Shell 12.6%
  • Ruby 12.5%