clojure / data.json

JSON analyzátor / generátor do / z datových struktur Clojure.

klíčové cíle:

  • v souladu s JSON spec na https://json.org/
  • žádné externí závislosti

zprávy a informace o závislostech

tento projekt sleduje schéma verze MAJOR.NEZLETILÝ.Oprava, kde každá komponenta poskytuje určitou relativní indikaci velikosti změny, ale nesleduje sémantické verze. Obecně platí, že všechny změny se snaží být neporušující (přechodem na nová jména spíše než porušením stávajících jmen).

nejnovější stabilní verze je 2.0.1

CLI / deps.edn informace o závislosti:

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

informace o závislosti v Leiningenu:

informace o závislosti Maven:

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

další verze:

  • všechny vydané verze

  • vývojové momentky

  • vývoj Snapshot repozitáře

použití

dokumentace API

příklad použití:

(ns example (:require ))

Chcete-li převést do / z JSON řetězců, použijte json/write-str a 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}

Všimněte si, že tyto operace nejsou symetrické: převod Clojure datainto JSON je ztrátový.

převod Typů Klíčů / hodnot

můžete zadat :key-fn pro převod mapových klíčů na cestě dovnitř nebo ven:

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

můžete zadat :value-fn pro převod mapových hodnot na cestě v orout. Hodnota-fn bude volána se dvěma argumenty, klíčem a hodnotou a vrátí aktualizovanou hodnotu.

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

uvědomte si, že :value-fn funguje pouze na mapách (JSON objekty). Pokud je datová struktura yourroot například vektorem dat, budete ji potřebovat před nebo po zpracování mimo data.json. clojure.chůze může býtužitečné pro toto.

pořadí klíče-fn / value-fn

pokud při čtení zadáte jak :key-fn, tak :value-fn, vyvolá se hodnota-fn poté, co byl klíč zpracován klávesou-fn.

opak je při psaní pravdivý:

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

čtení / zápis proudu

můžete také číst JSON přímo z java. io. Reader s json/reada psát JSON přímo do java. io. Writer s json/write.

více

další možnosti jsou k dispozici. Podrobnosti naleznete v dokumentaci API.

informace pro vývojáře

  • GitHub project
  • Jak přispět
  • Bug Tracker
  • kontinuální integrace
  • Matrix testu kompatibility

protokol změn

  • Release 2.0.1 on 2021-Mar-19
    • Fix DJSON-37: Fix off-by-one error reading long řetězce, regrese v 2.0.0
  • vydání 2.0.0 na 2021-Mar-19
    • Perf DJSON-35: Nahraďte PrintWriter obecnějším dodatkem, snižte balení
    • Perf DJSON-34: efektivnější psaní pro společnou cestu
    • Perf DJSON-32: použijte volbu mapa místo dynamických proměnných (ovlivňuje čtení+zápis)
    • Perf DJSON-33: Zvyšte rychlost čtení řetězců JSON
    • Fix DJSON-30: opravte špatný test
  • Release 1.1.0 on 2021-Mar-5
    • Fix DJSON-26: write-objekt by měl zkontrolovat seq na smyčce var, ne param
    • použijte nejnovější Nadřazený pom (narazí výchozí clojure dep na 1.8.0)
    • použijte přímé propojení na klasifikátoru “ AOT “ lib
  • Release 1.0.0 on 2020-Feb-18
  • Release 0.2.7 on 2019-Nov-18
    • Fix DJSON-29: hodit výjimku na chybějící položky objektu (extra čárky)
  • vydání 0.2.6 na 2015-Mar-6
    • upravit sestavení tak, aby produkoval balíček AOT s klasifikátorem „AOT“
  • vydání 0.2.5 na 2014-Jun-13
    • Fix DJSON-17: hodit výjimku na nekonečné nebo NaN plovoucí pointvalues. Staré chování by mohlo způsobit neplatné JSON.
  • Uvolněte 0.2.4 na 2014-Jan-10
    • malá změna v chování: clojure.data.json/pprint nyní přidává nový řádek po jeho výstupu stejně jako clojure.core/pprint
    • Fix DJSON-13: flush výstup po pprint
    • Fix DJSON-14: rukojeť EOF vnitřní útěk znaků
    • Fix DJSON-15: špatná syntaxe v testu
  • vydání 0.2.3 na 2013-Aug-30
    • Enhancement DJSON-9: možnost uniknout u + 2028 a u + 2029
    • Fix DJSON-11: Tisk nepotřebných čárek s hodnotou-fn
  • vydání 0.2.2 na 2013-Apr-07
    • Fix DJSON-7: extra čárky při odstraňování párů klíčů/hodnot)
    • Fix DJSON-8: nesprávný Výstupní proud v write-json
  • vydání 0.2.1 na 2012-Oct-26
    • obnovuje zpětnou kompatibilitu s 0.1.x vydání. Starší0, 1.X API jsou ve své dokumentaci označena jako zastaralá. Budou odstraněny v budoucím vydání.
  • vydání 0.2.0 na 2012-Oct-12
    • nedoporučuje se používat: toto vydání představilo lámání APIchanges (přejmenování základních funkcí) bez jakékoli cesty forbackwards-Kompatibilita. Aplikace s přechodnou závislostína obou 0,2.x a 0.1.X API nelze použít tuto verzi.
    • Novinka: key-fn a: value-fn umožňují flexibilní transformaci hodnot při čtení & psaní JSON
    • podpora pro čtení velkých celých čísel jako BigInt
    • volitelná podpora pro čtení desetinných míst jako BigDecimal
    • zlepšení výkonu
  • vydání 0.1.3 na 2012-Mar-09
    • Fix psaní řetězce obsahující znaky mimo BMP
  • vydání 0.1.2 na 2011-Oct-14
    • lepší parsování hexadecimálních znaků uniká
    • Fix EOF-handling bug
    • Fix DJSON-1: varování před odrazem
  • vydání 0.1.1 na 2011-červenec-01
    • ujistěte se, že tisk na *out* vždy používá PrintWriter.
  • vydání 0.1.0 na 2011-Mar-18
    • počáteční vydání.
    • zdroj-kompatibilní s clojure.contrib.json, až na změnu jména.

Copyright a licence

Copyright (c) Stuart Sierra, Rich Hickey, and contriburos 2012-2020.Všechna práva vyhrazena. Podmínky použití a distribuce tohoto softwaru jsou pokryty Eclipse PublicLicense 1.0 (https://opensource.org/licenses/eclipse-1.0.php), který můženajít v souboru epl-v10.html v kořenovém adresáři tohoto distribution.By používání tohoto softwaru jakýmkoli způsobem, souhlasíte s tím, že budete vázáni podmínkami této licence. Nesmíte odstranit toto oznámení, nebo jakýkoli jiný, z tohoto softwaru.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.