Clojure:
Trabalhando com JSON

Como fazer:

Clojure não inclui funções embutidas para trabalhar com JSON, então você normalmente usará bibliotecas de terceiros. cheshire e jsonista são escolhas populares devido à sua facilidade de uso e desempenho.

Usando o Cheshire

Primeiro, adicione o Cheshire às dependências do seu projeto em project.clj:

[com.fasterxml.jackson.core/jackson-core "2.12.0"]
[cheshire "5.10.1"]

Para analisar uma string JSON em um mapa Clojure e converter um mapa para uma string JSON:

(require '[cheshire.core :as json])

;; Analisar string JSON para mapa Clojure
(let [entrada-json "{\"name\":\"John\", \"age\":30}"]
  (json/parse-string entrada-json true)) ; => {"name" "John", "age" 30}

;; Converter mapa Clojure para string JSON
(let [mapa-clj {"name" "John", "age" 30}]
  (json/generate-string mapa-clj)) ; => "{\"name\":\"John\",\"age\":30}"

Usando o Jsonista

Adicione o Jsonista ao seu projeto project.clj:

[jsonista "0.3.2"]

Operações similares com Jsonista:

(require '[jsonista.core :as j])

;; Analisar string JSON para Clojure
(let [entrada-json "{\"name\":\"Emily\", \"age\":25}"]
  (j/read-value entrada-json)) ; => {"name" "Emily", "age" 25}

;; Converter mapa Clojure para string JSON
(let [mapa-clj {"name" "Emily", "age" 25}]
  (j/write-value-as-string mapa-clj)) ; => "{\"name\":\"Emily\",\"age\":25}"

Em ambas as bibliotecas, você tem a opção de codificar e decodificar estruturas de dados mais complexas, e existem funções e parâmetros adicionais que permitem a personalização dos processos de serialização e deserialização. Para a maioria das aplicações, a funcionalidade demonstrada fornece uma base sólida para trabalhar com JSON em aplicações Clojure.