clojure / data.json

JSON elemző / generátor a Clojure adatszerkezetekhez.

fő célok:

  • megfelel a JSON specifikációnak https://json.org/
  • nincs külső függőség

kiadások és függőségi információk

ez a projekt a fő verziósémát követi.Kisebb.Javítás, ahol az egyes összetevők relatív jelzést adnak a változás méretéről, de nem követik a szemantikai verziókat. Általában minden változás arra törekszik, hogy ne törjön meg (új nevekre való áttéréssel, nem pedig a meglévő nevek megszakításával).

a legújabb stabil kiadás 2.0.1

CLI / deps.edn függőségi információk:

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

Leiningen függőségi információk:

Maven függőségi információk:

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

egyéb verziók:

  • minden kiadott verzió

  • fejlesztési Pillanatképek

  • fejlesztési Pillanatkép-Tárolók

használat

API dokumentáció

példa használat:

(ns example (:require ))

a JSON karakterláncok konvertálásához használja a json/write-str és 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}

vegye figyelembe, hogy ezek a műveletek nem szimmetrikusak: a Clojure datainto JSON konvertálása veszteséges.

kulcs/érték típusok konvertálása

megadhat egy :key-fn – et a térkép kulcsok konvertálásához be-vagy kifelé menet:

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

megadhat egy :value-fnértéket a térképértékek konvertálásához az orout-ban. Az-fn értéket két argumentummal hívják meg, a kulcs és a thevalue, és a frissített értéket adja vissza.

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

ne feledje, hogy az :value-fn csak térképeken (JSON objektumokon) működik. Ha az öngyökér adatstruktúrája például a dátumok vektora, akkor szüksége lesz ráelő – vagy utófeldolgozás az adatokon kívül.json. clojure.séta lehethasznos erre.

az-fn / value-fn

kulcs sorrendje ha olvasáskor megadja a :key-fn és a :value-fn értéket is,akkor az-fn értéket a rendszer meghívja, miután a kulcsot a kulcs-fn feldolgozta.

a fordított igaz írás közben:

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

adatfolyam olvasása / írása

a JSON-t közvetlenül a java.io.Reader fájlból is olvashatja json/readfájllal, és a JSON-t közvetlenül a java.io.Writer fájlba írhatja json/writefájllal.

több

egyéb lehetőségek állnak rendelkezésre. A részleteket lásd az API dokumentációjában.

fejlesztői információk

  • GitHub projekt
  • hogyan járulhatunk hozzá
  • Bug Tracker
  • folyamatos integráció
  • kompatibilitási teszt mátrix

Változásnapló

  • release 2.0.1 on 2021-Mar-19
    • Fix Djson-37: fix off-by-one hiba olvasás hosszú húrok, regresszió 2.0.0
  • kiadás 2.0.0 2021-én-márc-19
    • Perf DJSON-35: Cserélje ki a Printwritert általánosabb függelékre, csökkentse a csomagolást
    • Perf DJSON-34: hatékonyabb írás a közös útvonalhoz
    • Perf DJSON-32: használja az opciót térkép dinamikus változók helyett (befolyásolja az olvasást+írást)
    • Perf DJSON-33: javítsa az olvasás sebességét JSON húrok
    • fix DJSON-30: javítsa a rossz tesztet
  • Release 1.1.0 on 2021-Mar-5
    • Fix DJSON-26: write-object kell ellenőrizni seq hurok var, nem param
    • Használja legújabb szülő pom (bump alapértelmezett clojure dep 1.8.0)
    • használjon közvetlen összekapcsolást az ” AOT ” osztályozó lib-n
  • Release 1.0.0 on 2020-Feb-18
  • Release 0.2.7 on 2019-Nov-18
    • Fix DJSON-29: dobjon kivételt a hiányzó objektum bejegyzésekre (extra vesszők)
  • Release 0.2.6 on 2015-Mar-6
    • módosítása építeni, hogy készítsen egy AOT csomag osztályozó “AOT”
  • Release 0.2.5 on 2014-Jun-13
    • Fix DJSON-17: dobd kivétel végtelen vagy NaN lebegőpontos értékek. A régi viselkedés érvénytelen JSON-t eredményezhet.
  • kiadás 0.2.4 a 2014-Jan-10
    • kis változás a viselkedés: clojure.data.json/pprint most hozzáteszi anewline után a kimenet, mint clojure.core/pprint
    • Fix DJSON-13: flush kimenet után pprint
    • Fix DJSON-14: kezelni EOF belső karakter escape
    • Fix DJSON-15: rossz szintaxis teszt
  • Release 0.2.3 on 2013-Aug-30
    • Enhancement DJSON-9: lehetőség, hogy elkerülje U + 2028 és U + 2029
    • Fix DJSON-11: nyomtatás felesleges vesszők érték-fn
  • kiadás 0.2.2 a 2013-április-07
    • Fix DJSON-7: extra vesszők a kulcs/érték párok eltávolításakor)
    • Fix DJSON-8: rossz kimeneti adatfolyam write-json
  • Release 0.2.1 on 2012-Oct-26
    • visszaállítja visszafelé kompatibilitás 0.1.x kiadások. Az idősebb0. 1.az X API-k elavultként vannak megjelölve a dokumentációban. Egy későbbi kiadásban eltávolítják őket.
  • Release 0.2.0 on 2012-Oct-12
    • nem ajánlott: ez a kiadás bevezetett törés APIchanges (átnevezés alapvető funkciók) nélkül utat forbackwards-kompatibilitás. Alkalmazások tranzitív függőségekkelmind a 0.2.x és 0.1.x API-k nem használhatják ezt a verziót.
    • Új: key-fn and: value-fn lehetővé teszi az értékek rugalmas átalakítását & JSON írásakor
    • nagy egész számok Bigintként történő olvasásának támogatása
    • opcionális támogatás a tizedesjegyek Bigdecimalként történő olvasásához
    • teljesítményjavítások
  • Release 0.1.3 on 2012-Mar-09
    • Fix írás karakterláncok tartalmazó karakterek kívül BMP
  • Release 0.1.2 on 2011-Oct-14
    • jobb elemzése hexadecimális karakter menekül
    • Fix EOF-kezelési hiba
    • Fix DJSON-1: reflexiós figyelmeztetések
  • Release 0.1.1 on 2011-július-01
    • győződjön meg arról, hogy a nyomtatás *out* mindig használ PrintWriter.
  • Release 0.1.0 on 2011-Mar-18
    • kezdeti kiadás.
    • forrás-kompatibilis a clojure-val.contrib.json, kivéve a névváltoztatást.

szerzői jog és licenc

szerzői jog (C) Stuart Sierra, Rich Hickey és közreműködői 2012-2020.Minden jog fenntartva. A szoftver használatára és terjesztésére vonatkozó feltételeket az Eclipse PublicLicense 1 szabályozza.0 (https://opensource.org/licenses/eclipse-1.0.php), amely képesmegtalálható az epl-v10 fájlban.html ennek gyökerében distribution.By a szoftver bármilyen módon történő használatával Ön elfogadja, hogy a jelen licenc feltételei kötelezőek. Nem távolíthatja el ezt az értesítést, vagy bármi más, ebből a szoftverből.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.