clojure / data.json

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/readja 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 like clojure.core/pprint
    • Fix DJSON-13: flush output after pprint
    • fix DJSON-14: handle EOF inside character escape
    • Fix DJSON-15: bad syntax in test
  • 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.
  • 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.

Vastaa

Sähköpostiosoitettasi ei julkaista.