clojure / data.json

JSON parser / generator til / Fra Clojure datastrukturer.

Viktige mål:

  • Kompatibel med JSON spec per https://json.org/
  • ingen eksterne avhengigheter

Utgivelser Og Avhengighetsinformasjon

dette prosjektet følger versjonsskjemaet MAJOR.MINDREÅRIG.PATCH hvor hver komponent gir noen relativ indikasjon på storrelsen pa endringen, men folger ikke semantisk versjonering. Generelt forsøker alle endringer å være ikke-bryte (ved å flytte til nye navn i stedet for ved å bryte eksisterende navn).

Siste stabile utgivelse er 2.0.1

cli / deps.edn avhengighetsinformasjon:

org.clojure/data.json {:mvn/version "2.0.1"}

Informasjon Om leiningen dependency:

informasjon Om maven dependency:

<dependency> <groupId>org.clojure</groupId> <artifactId>data.json</artifactId> <version>2.0.1</version></dependency>

andre versjoner:

  • Alle Utgitte Versjoner

  • Utvikling Snapshots

  • Utvikling Snapshot Repositories

Bruk

API-Dokumentasjon

Eksempelbruk:

(ns example (:require ))

for å konvertere TIL/FRA json-strenger, bruk json/write-str og 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}

Merk at disse operasjonene ikke er symmetriske: konvertering Av Clojure datainto JSON er lossy.

Konverteringsnøkkel / Verdityper

du kan angi en :key-fn for å konvertere kartnøkler på vei inn eller ut:

(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}

du kan angi en :value-fn for å konvertere kartverdier på vei i orout. Verdien-fn vil bli kalt med to argumenter, nøkkelen og verdien, og den returnerer den oppdaterte verdien.

(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"}

Vær oppmerksom på at :value-fn bare fungerer på kart (json-objekter). Hvis yourroot datastruktur er for eksempel en vektor av datoer, trenger duå pre – eller post-behandle den utenfor data.json. clojure.gå kan værenyttig for dette.

Rekkefølge av nøkkel-fn / verdi-fn

hvis du angir både en :key-fn og en :value-fn når du leser, kalles verdien-fn etter at nøkkelen er behandlet av nøkkel-fn.

omvendt er sant når du skriver:

(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\"}"

Lese / Skrive En Strøm

Du kan også lese JSON direkte fra en java.io.Reader med json/read og skrive JSON direkte til en java.io.Writer med json/write.

Mer

Andre alternativer er tilgjengelige. Se API-Dokumentasjonen for detaljer.

Utviklerinformasjon

  • GitHub-prosjekt
  • hvordan bidra
  • Bug Tracker
  • Kontinuerlig Integrasjon
  • Kompatibilitetstestmatrise

Endringslogg

  • slipp 2.0.1 På 2021-Mar-19
    • Løs Djson-37: løs feil ved å lese Lange strenger, regresjon i 2.0.0
  • Slipp 2.0.0 på 2021-Mar-19
    • Perf DJSON-35: Erstatt Tekstforfatter med mer generisk Vedlegg, reduser innpakning
    • Perf DJSON-34: mer effektiv skriving for felles sti
    • Perf DJSON-32: Bruk alternativkart i stedet for dynamiske variabler (påvirker lese+skrive)
    • Perf DJSON-33: Forbedre hastigheten på lesing JSON-strenger
    • Fix DJSON-30: Fikse dårlig test
  • Release 1.1.0 på 2021-Mar-5
    • Fix DJSON-26: skriv-objekt bør sjekke seq på loop var, ikke param
    • Bruk nyeste foreldre pom (vil støte standard clojure dep til 1.8.0)
    • Bruk direkte kobling på» aot » klassifikator lib
  • Release 1.0.0 on 2020-Feb-18
  • Release 0.2.7 on 2019-Nov-18
    • Fix DJSON-29: kast unntak på manglende objektoppføringer (ekstra komma)
  • Release 0.2.6 på 2015-Mar-6
    • Endre bygg for å produsere EN aot-pakke med klassifikator «aot»
  • Release 0.2.5 på 2014-Jun-13
    • Fix DJSON-17: kast unntak På Uendelig eller nan flytende pointvalues. Gammel oppførsel kan produsere ugyldig JSON.
  • Utgivelse 0.2.4 på 2014-Jan-10
    • Liten endring i atferd: clojure.data.json/pprint legger nå anewline etter sin utgang akkurat som clojure.core/pprint
    • Fix DJSON-13: flush utgang etter pprint
    • Fix DJSON-14: håndtere eof inne tegn escape
    • Fix DJSON-15: dårlig syntaks i test
  • Release 0.2.3 på 2013-Aug-30
    • Enhancement DJSON-9: mulighet for å unnslippe U+2028 Og U+2029
    • Fix DJSON-11: skrive ut unødvendige kommaer med verdi-fn
  • Slipp 0.2.2 på 2013-Apr-07
    • Fix DJSON-7: ekstra komma når du fjerner nøkkel / verdipar)
    • Fix DJSON-8: feil utgangsstrøm i write-json
  • Utgivelse 0.2.1 på 2012-Oct-26
    • Gjenoppretter bakoverkompatibilitet med 0.1.x utgivelser. Den eldre0. 1.x Api-Er er merket som utdatert i dokumentasjonen. Theywill bli fjernet i en fremtidig utgivelse.
  • Release 0.2.0 på 2012-Oct-12
    • Ikke anbefalt for bruk: denne utgivelsen introdusert bryte APIchanges (døpe kjernefunksjoner) uten noen vei forbackwards-kompatibilitet. Applikasjoner med transitive avhengigheterpå begge 0,2.x og 0.1.x Apier kan ikke bruke denne versjonen.
    • Nytt :nøkkel-fn og: verdi-fn tillater fleksibel transformasjonav verdier når du leser & skriver JSON
    • Støtte for å lese store heltall Som BigInt
    • Valgfri støtte for å lese desimaler Som BigDecimal
    • ytelsesforbedringer
  • Release 0.1.3 på 2012-Mar-09
    • Fix skrive strenger som inneholder tegn utenfor BMP
  • Release 0.1.2 på 2011-Oct-14
    • Bedre parsing av heksadesimale tegn rømming
    • Fix EOF-håndtering bug
    • Fix DJSON-1: refleksjon advarsler
  • Utgivelse 0.1.1 på 2011-Jul-01
    • Kontroller at utskrift til *out* alltid bruker En Tekstforfatter.
  • Utgivelse 0.1.0 på 2011-Mar-18
    • Første utgivelse.
    • Kilde-kompatibel med clojure.bidrag.json, bortsett fra navneendringen.

Opphavsrett Og Lisens

Opphavsrett (c) Stuart Sierra, Rich Hickey, og bidrag 2012-2020.Alle rettigheter reservert. Vilkårene for bruk og distribusjon for denne programvaren er dekket Av Eclipse PublicLicense 1.0 (https://opensource.org/licenses/eclipse-1.0.php) som kanfinnes i filen epl-v10.html ved roten av dette distribution.By ved å bruke denne programvaren på noen måte, godtar du å være bundet av vilkårene i denne lisensen. Du må ikke fjerne denne meldingen, eller noen andre, fra denne programvaren.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.