clojure / date.json

JSON parser/generator de/de la structuri de date Clojure.

obiective cheie:

  • conform cu JSON spec per https://json.org/
  • nu există dependențe externe

comunicate și informații dependență

acest proiect urmează schema versiune majoră.MINOR.PATCH în care fiecare componentă oferă o indicație relativă a dimensiunii modificării, dar nu urmează versiunea semantică. În general, toate modificările se străduiesc să nu se rupă (trecând la nume noi, mai degrabă decât prin ruperea numelor existente).

ultima versiune stabilă este 2.0.1

CLI/deps.edn informații despre dependență:

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

informații despre dependența Leiningen:

informații despre dependența Maven:

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

alte versiuni:

  • toate versiunile lansate

  • instantanee de dezvoltare

  • depozite instantanee de dezvoltare

utilizare

documentație API

exemplu utilizare:

(ns example (:require ))

pentru a converti la / de la siruri de caractere JSON, utilizați json/write-str și 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}

rețineți că aceste operații nu sunt simetrice: conversia Clojure datainto JSON este lossy.

conversia tipurilor de chei / valori

puteți specifica o :key-fn pentru a converti tastele hărții la intrare sau la ieșire:

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

puteți specifica un :value-fn pentru a converti valorile hărții pe drum în orout. Valoarea-fn va fi apelată cu două argumente, cheia șivaloare, și returnează valoarea actualizată.

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

rețineți că :value-fn funcționează numai pe hărți (obiecte JSON). Dacă structura dvs. de date rădăcină este, de exemplu, un vector de date, va trebui să o pre – sau post-procesați în afara datelor.json. clojure.plimbarea poate fiutile pentru asta.

ordinea cheii-fn / value-fn

dacă specificați atât a :key-fn cât și a :value-fn la citire,valoarea-fn este apelată după ce cheia a fost procesată de cheia-fn.

reversul este adevărat atunci când scrieți:

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

citirea / scrierea unui flux

de asemenea, puteți citi JSON direct dintr-un Java.io.Reader cu json/readși puteți scrie JSON direct într-un java.io.Writer cu json/write.

mai multe

alte opțiuni sunt disponibile. Consultați documentația API pentru detalii.

informații pentru dezvoltatori

  • proiect GitHub
  • cum să contribuiți
  • Tracker de erori
  • Integrare Continuă
  • matrice de testare a compatibilității

jurnal de modificări

  • versiunea 2.0.1 pe 2021-Mar-19
    • remediați Djson-37: remediați eroarea off-by-one citind șiruri lungi, regresie în 2.0.0
  • eliberați 2.0.0 pe 2021-Mar-19
    • Perf DJSON-35: Înlocuiți PrintWriter cu mai generic Appendable, reduce ambalaj
    • perf DJSON-34: scris mai eficient pentru calea comună
    • perf DJSON-32: utilizați opțiunea hartă în loc de variabile dinamice (afectează citire+scriere)
    • perf DJSON-33: îmbunătățirea vitezei de citire siruri de caractere JSON
    • Fix DJSON-30: Fix test de rău
  • Release 1.1.0 pe 2021-Mar-5
    • Fix DJSON-26: scrie-obiect ar trebui să verifice seq pe bucla var, nu param
    • utilizați cele mai recente pom părinte (va ciocni implicit Clojure dep la 1.8.0)
    • utilizați legătura directă pe clasificatorul ” AOT „lib
  • eliberați 1.0.0 pe 2020-Feb-18
  • eliberați 0.2.7 pe 2019-Nov-18
    • remediați DJSON-29:aruncați excepția la intrările de obiecte lipsă (virgule suplimentare)
  • Release 0.2.6 pe 2015-Mar-6
    • modifica construi pentru a produce un pachet AOT cu clasificator „aot”
  • Release 0.2.5 pe 2014-Iunie-13
    • Fix DJSON-17: arunca excepție pe infinit sau Nan virgulă flotantăvalori. Comportamentul vechi ar putea produce invalid JSON.
  • eliberați 0.2.4 pe 2014-Jan-10
    • mici schimbări în comportament: clojure.data.json/pprint acum adaugă anewline după ieșirea sa la fel ca clojure.core/pprint
    • Fix DJSON-13: ieșire flush după pprint
    • Fix DJSON-14: Mâner EOF interior caracter de evacuare
    • Fix DJSON-15: sintaxa rău în test
  • Release 0.2.3 pe 2013-Aug-30
    • accesoriu DJSON-9: opțiunea de a scăpa de U+2028 și U+2029
    • Fix DJSON-11: Imprimarea virgule inutile cu valoare-fn
  • Release 0.2.2 pe 2013-Apr-07
    • Fix DJSON-7: virgule suplimentare atunci când scoateți perechi cheie / valoare)
    • Fix DJSON-8: flux de ieșire greșit în write-json
  • Release 0.2.1 pe 2012-Oct-26
    • restabilește înapoi-compatibilitate cu 0.1.x lansări. Cel mai vechi0. 1.API-urile x sunt marcate ca depreciate în documentația lor. Acestea vor fi eliminate într-o versiune viitoare.
  • Release 0.2.0 pe 2012-Oct-12
    • nu este recomandat pentru utilizare: această versiune a introdus apichanges de rupere (redenumirea funcțiilor de bază), fără nici o cale forbackwards-compatibilitate. Aplicații cu dependențe tranzitivepe ambele 0.2.x și 0.1.API-urile X nu pot utiliza această versiune.
    • nou: cheie-fn și: value-FN permite transformarea flexibilă a valorilor la citirea & scrierea JSON
    • suport pentru citirea numerelor întregi mari ca BigInt
    • suport opțional pentru citirea zecimalelor ca BigDecimal
    • îmbunătățiri ale performanței
  • Release 0.1.3 pe 2012-Mar-09
    • corzi de scriere fixe care conțin caractere în afara BMP
  • Release 0.1.2 pe 2011-Oct-14
    • o mai bună parsare a Caracter hexazecimal scapă
    • Fix EOF-manipulare bug
    • Fix DJSON-1: avertismente de reflecție
  • Release 0.1.1 pe 2011-Jul-01
    • asigurați-vă că imprimarea la *out* utilizează întotdeauna un PrintWriter.
  • Release 0.1.0 pe 2011-Mar-18
    • lansare inițială.
    • sursă-compatibil cu clojure.contrib.json, cu excepția schimbării numelui.

drepturi de autor și licență

drepturi de autor (c) Stuart Sierra, Rich Hickey și contriburos 2012-2020.Toate drepturile rezervate. Termenii de utilizare și distribuție pentru acest software sunt acoperiți de Eclipse PublicLicense 1.0 (https://opensource.org/licenses/eclipse-1.0.php) care poatesă fie găsit în fișierul EPL-v10.html la rădăcina acestui distribution.By folosind acest software în orice mod, sunteți de acord să fie legat de termenii acestei licențe. Nu trebuie să eliminați această notificare, sau anyother, din acest software.

Lasă un răspuns

Adresa ta de email nu va fi publicată.