Clojure:
Työskentely JSON:n kanssa

Kuinka:

Clojure ei sisällä sisäänrakennettuja funktioita työskentelyyn JSONin kanssa, joten yleensä käytetään kolmannen osapuolen kirjastoja. cheshire ja jsonista ovat suosittuja valintoja niiden käytön helppouden ja suorituskyvyn vuoksi.

Cheshiren käyttö

Lisää ensin Cheshire projektisi riippuvuuksiin project.clj tiedostossa:

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

JSON-merkkijonon jäsentämiseksi Clojure-hajautustauluksi ja hajautustaulun muuntamiseksi JSON-merkkijonoksi:

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

;; Jäsennä JSON-merkkijono Clojure-hajautustauluksi
(let [json-input "{\"name\":\"John\", \"age\":30}"]
  (json/parse-string json-input true)) ; => {"name" "John", "age" 30}

;; Muunna Clojure-hajautustaulu JSON-merkkijonoksi
(let [clj-map {"name" "John", "age" 30}]
  (json/generate-string clj-map)) ; => "{\"name\":\"John\",\"age\":30}"

Jsonistan käyttö

Lisää Jsonista projektiisi project.clj:

[jsonista "0.3.2"]

Vastaavat toiminnot Jsonistalla:

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

;; Jäsennä JSON-merkkijono Clojureen
(let [json-input "{\"name\":\"Emily\", \"age\":25}"]
  (j/read-value json-input)) ; => {"name" "Emily", "age" 25}

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

Molemmissa kirjastoissa on mahdollisuus koodata ja dekoodata monimutkaisempia tietorakenteita, ja käytössä on lisätoimintoja ja parametreja, jotka mahdollistavat sarjoittamisen ja deserialisoinnin prosessien mukauttamisen. Useimmissa sovelluksissa esitelty toiminnallisuus tarjoaa vankan perustan työskentelylle JSONin kanssa Clojure-sovelluksissa.