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/read
fájllal, és a JSON-t közvetlenül a java.io.Writer fájlba írhatja json/write
fá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, mintclojure.core/pprint
- Fix DJSON-13: flush kimenet után pprint
- Fix DJSON-14: kezelni EOF belső karakter escape
- Fix DJSON-15: rossz szintaxis teszt
- kis változás a viselkedés:
- 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.
- győződjön meg arról, hogy a nyomtatás
- 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.