JSON parser/generator to/from Clojure data structures.
Avaintavoitteet:
- yhteensopiva JSON spec per https://json.org/
- ei ulkoisia riippuvuuksia
tiedotteet ja Riippuvuustiedot
tämä projekti noudattaa versiota scheme MAJOR.PIENI.Paikkaus, jossa jokainen komponentti antaa jonkin suhteellisen tiedon muutoksen koosta, mutta ei seuraa semanttista versiointia. Yleensä kaikki muutokset pyrkivät olemaan murtamattomia (siirtymällä uusiin nimiin eikä rikkomalla olemassa olevia nimiä).
viimeisin vakaa julkaisu on 2. 0. 1
CLI / deps.edn
riippuvuustiedot:
org.clojure/data.json {:mvn/version "2.0.1"}
leiningen riippuvuustiedot:
Maven-riippuvuustiedot:
<dependency> <groupId>org.clojure</groupId> <artifactId>data.json</artifactId> <version>2.0.1</version></dependency>
muita versioita:
-
kaikki julkaistut versiot
-
Development Snapshots
-
kehityksen Tilannekuvavarastot
käyttö
API-dokumentaatio
Esimerkkikäyttö:
(ns example (:require ))
muuntaa / JSON Jouset, käytä json/write-str
ja json/read-str
:
(json/write-str {:a 1 :b 2});;=> "{\"a\":1,\"b\":2}"(json/read-str "{\"a\":1,\"b\":2}");;=> {"a" 1, "b" 2}
huomaa, että nämä toiminnot eivät ole symmetrisiä: Clojure-tietojen muuntaminen JSONILLE on häviöllistä.
muunnetaan avain / arvotyypit
voit määrittää :key-fn
, jotta karttanäppäimet voidaan muuntaa sisään-tai ulosmatkalla:
(json/read-str "{\"a\":1,\"b\":2}" :key-fn keyword);;=> {:a 1, :b 2}(json/write-str {:a 1 :b 2} :key-fn #(.toUpperCase %));;=> "{\"A\":1,\"B\":2}"(json/read-str "{\"a\":1,\"b\":2}" :key-fn #(keyword "com.example" %));;=> {:com.example/a 1, :com.example/b 2}
voit määrittää :value-fn
muuttaaksesi kartta-arvot matkalla oroutissa. Arvoa-fn kutsutaan kahdella argumentilla, avain ja arvo, ja se palauttaa päivitetyn arvon.
(defn my-value-reader (if (= key :date) (java.sql.Date/valueOf value) value))(json/read-str "{\"number\":42,\"date\":\"2012-06-02\"}" :value-fn my-value-reader :key-fn keyword) ;;=> {:number 42, :date #inst "2012-06-02T04:00:00.000-00:00"}
huomaa, että :value-fn
toimii vain kartoissa (JSON-objektit). Jos yourroot tietorakenne on, esimerkiksi, vektori päivämäärät, sinun täytyy pre-tai post-käsitellä sen ulkopuolella tietoja.json. clojure.kävelystä voi olla hyötyä.
avaimen Järjestys-fn / arvo-Fn
jos lukiessa määritellään sekä a :key-fn
että A :value-fn
, arvoa-fn kutsutaan sen jälkeen, kun avain on käsitelty avaimella-fn.
kirjoitettaessa pätee päinvastainen:
(defn my-value-writer (if (= key :date) (str (java.sql.Date. (.getTime value))) value))(json/write-str {:number 42, :date (java.util.Date. 112 5 2)} :value-fn my-value-writer :key-fn name) ;;=> "{\"number\":42,\"date\":\"2012-06-02\"}"
Lukeminen / Kirjoittaminen Stream
Voit myös lukea JSON suoraan java.io.Reader kanssa json/read
ja kirjoittaa JSON suoraan java.io.Writer kanssa json/write
.
lisää
muita vaihtoehtoja on tarjolla. Katso lisätietoja API-dokumentaatiosta.
Kehittäjätieto
- GitHub-projekti
- miten osallistua
- Bug Tracker
- jatkuva integraatio
- Yhteensopivuustestimatriisi
Muutosloki
- release 2.0.1 on 2021-Mar-19
- Fix Djson-37: fix off-by-one Error reading long strings, regression in 2.0.0
- Release 2.0.0 on 2021-Mar-19
- Perf DJSON-35: Korvaa PrintWriter yleisemmällä liitteellä, vähennä käärimistä
- Perf DJSON-34: tehokkaampaa kirjoittamista yhteiselle polulle
- Perf DJSON-32: käytä option karttaa dynaamisten muuttujien sijaan (vaikuttaa luku+kirjoitus)
- perf DJSON-33: Paranna lukunopeutta JSON strings
- Korjaa DJSON-30: korjaa huono testi
- Release 1.1.0 on 2021-Mar-5
- Fix DJSON-26: write-object should check seq on loop var, not param
- Use latest parent pom (will bump default clojure dep to 1.8.0)
- Käytä suoraa linkitystä” aot ”- luokittelijan lib
- Release 1.0.0 on 2020-Feb-18
- Release 0.2.7 on 2019-marras-18
- Fix DJSON-29: throw exception on missing object entries (extra pilkut)
- julkaisu 0.2.6 2015-maalis-6
- Muokkaa käännöstä tuottamaan AOT-paketti, jossa on luokittelija ”aot”
- Release 0.2.5 on 2014-Jun-13
- Fix DJSON-17: throw exception on Infinite or NaN floating-pointvalues. Vanha käytös voi aiheuttaa epäkelvon JSONin.
- julkaisu 0.2.4 on 2014-Jan-10
- Small change in behavior:
clojure.data.json/pprint
now adds anewline after its output just likeclojure.core/pprint
- Fix DJSON-13: flush output after pprint
- fix DJSON-14: handle EOF inside character escape
- Fix DJSON-15: bad syntax in test
- Small change in behavior:
- Release 0.2.3 on 2013-Aug-30
- Enhancement DJSON-9: option to escape U+2028 and U+2029
- Fix DJSON-11: printing tarpeettomat pilkut arvolla-fn
- Release 0.2.2 on 2013-Apr-07
- Fix DJSON-7: ylimääräiset pilkut avaimia / arvopareja poistettaessa)
- Korjaa DJSON-8: väärä Lähtövirta
write-json
- julkaisu 0.2.1 2012-Oct-26
- palauttaa taaksepäin-yhteensopivuuden 0.1: n kanssa.x vapauttaa. Older0. 1.X API-rajapinnat on merkitty vanhentuneiksi niiden dokumentaatiossa. Ne poistetaan tulevassa julkistuksessa.
- Release 0.2.0 on 2012-Oct-12
- ei suositella käytettäväksi: tämä julkaisu esitteli breaking APIchanges (uudelleennimeäminen core toiminnot) ilman polku forbackwards-Yhteensopivuus. Sovellukset, joilla on transitiivinen riippuvuus sekä 0.2.x ja 0.1.X-sovellusliittymät eivät voi käyttää tätä versiota.
- New: key-fn and: value-fn allow flexible transformation of values when reading & writing JSON
- Support for reading large integers as BigInt
- Optional support for reading decimals as BigDecimal
- Performance improvements
- Release 0.1.3 on 2012-Mar-09
- Fix writing strings containing characters outside the BMP
- julkaisu 0.1.2 2011-loka-14
- Heksadesimaalimerkin parempi jäsennys pakenee
- Korjaa EOF – käsittelyvirhe
- Korjaa DJSON-1: heijastusvaroitukset
- julkaisu 0.1.1 2011-heinä-01
- varmista, että tulostuksessa
*out*
käytetään aina Printwriteria.
- varmista, että tulostuksessa
- julkaisu 0.1.0 2011-maalis-18
- ensimmäinen julkaisu.
- Source-yhteensopiva Clojuren kanssa.contrib.JSON, paitsi nimenmuutos.
Copyright and License
Copyright (C) Stuart Sierra, Rich Hickey, and contriburos 2012-2020.Kaikki oikeudet pidätetään. Tämän ohjelmiston käyttö-ja jakeluehdot kuuluvat Eclipse PublicLicense 1: n piiriin.0 (https://opensource.org/licenses/eclipse-1.0.php), joka löytyy tiedostosta epl-v10.html tämän juuressa distribution.By käyttämällä tätä ohjelmistoa millään tavalla, suostut sitoutumaan tämän lisenssin ehtoihin. Et saa poistaa tätä ilmoitusta, tai mitään muuta, tästä ohjelmistosta.