clojure / data.json

JSON parser / generator naar / van Clojure datastructuren.

belangrijkste doelstellingen:

  • Compatibel met JSON spec per https://json.org/
  • geen externe afhankelijkheden

Releases en Afhankelijkheidsinformatie

dit project volgt de hoofdversie van het versieschema.KLEIN.PATCH waarbij elk onderdeel een relatieve indicatie geeft van de grootte van de verandering, maar geen semantische versievorming volgt. In het algemeen proberen alle veranderingen niet-brekend te zijn (door naar nieuwe namen te verhuizen in plaats van door bestaande namen te breken).

meest Recente stabiele versie is 2.0.1

CLI/deps.edn afhankelijkheid informatie:

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

Leiningen afhankelijkheid informatie:

Maven afhankelijkheid informatie:

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

Andere versies:

  • Alle Versies Uitgebracht

  • de Ontwikkeling van Snapshots

  • Ontwikkeling Momentopname Repositories

Gebruik

API-Documentatie

Voorbeeld gebruik:

(ns example (:require ))

om naar/van JSON-tekenreeksen te converteren, gebruik json/write-str en 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 op dat deze bewerkingen niet symmetrisch zijn: het omzetten van Clojure datain naar JSON is verliesloos.

sleutel / waarde converteren

u kunt een :key-fn opgeven om kaarttoetsen te converteren tijdens het in-of uitstappen:

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

u kunt een :value-fn opgeven om kaartwaarden te converteren op de weg naar orout. De waarde-fn wordt aangeroepen met twee argumenten, de sleutel en de waarde, en het Retourneert de bijgewerkte waarde.

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

wees ervan bewust dat :value-fn alleen werkt op kaarten (JSON-objecten). Als uwroot-gegevensstructuur bijvoorbeeld een vector van datums is, moet u deze vóór of na de verwerking buiten de gegevens verwerken.json. clojure.lopen kan nuttig zijn voor dit.

volgorde van sleutel-fn / waarde-Fn

als u zowel een :key-fn als een :value-fn opgeeft tijdens het lezen, wordt de waarde-fn aangeroepen nadat de sleutel is verwerkt door thekey-fn.

het omgekeerde is waar bij het schrijven:

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

lezen / schrijven van een Stream

u kunt JSON ook direct lezen vanaf een java. io. Reader met json/readen JSON direct schrijven naar een java.io.Writer met json/write.

meer

andere opties zijn beschikbaar. Raadpleeg de API-Documentatie voor meer informatie.

Ontwikkelaarsinformatie

  • GitHub-project
  • bijdragen
  • Bug Tracker
  • continue integratie
  • Compatibiliteitstestmatrix

Log wijzigen

  • Release 2.0.1 on 2021-Mar-19
    • Fix DJSON-37: fix off-by-one fout bij het lezen van lange strings, regressie in 2.0.0
  • Release 2.0.0 on 2021-mrt-19
    • Perf DJSON-35: Vervang PrintWriter met meer generieke Appendable, verminderen verpakking
    • Perf DJSON-34: efficiënter schrijven voor gemeenschappelijk pad
    • Perf DJSON-32: Gebruik de optie kaart in plaats van dynamische variabelen (invloed op lezen+schrijven)
    • Perf DJSON-33: het Verbeteren van de snelheid van het lezen JSON strings
    • Fix DJSON-30: Fix slechte test
  • Release 1.1.0 op 2021-Mar-5
    • Fix DJSON-26: schrijf-object moet controleren seq op loop var, niet param
    • Gebruik de laatste parent pom (stoot standaard clojure dep tot en met 1.8.0)
    • Gebruik maken van directe koppelingen op “aot” classifier “lib
  • Release 1.0.0 op 2020-Feb-18
  • Release 0.2.7 op 2019-Nov-18
    • Fix DJSON-29: gooi uitzondering op ontbrekende object-items (extra komma’ s)
  • Release 0.2.6 op 2015-Mar-6
    • Wijzigen bouwen voor het produceren van een AOT-pakket met classifier “aot”
  • Release 0.2.5 op 2014-Jun-13
    • Fix DJSON-17: gooi uitzondering op Oneindig of NaN floating-pointvalues. Oud gedrag kan ongeldige JSON opleveren.
  • laat 0.2 Los.4 op 2014-Jan-10
    • Kleine verandering in gedrag: clojure.data.json/pprint nu voegt anewline na de uitvoer net als clojure.core/pprint
    • Fix DJSON-13: spoel de output na pprint
    • Fix DJSON-14: handvat EOF in karakter ontsnappen
    • Fix DJSON-15: ongeldige syntaxis in de test
  • Release 0.2.3 op 2013-Apr-30
    • Toebehoren DJSON-9: mogelijkheid om te ontsnappen U+2028 en U+2029
    • Fix DJSON-11: afdrukken onnodige komma ‘ s met waarde-fn
  • Release 0.2.2 op 2013-Apr-07
    • Fix DJSON-7: extra komma ‘ s bij het verwijderen van sleutel / waarde paren)
    • Fix DJSON-8: verkeerde uitvoer stream in write-json
  • versie 0.2.1 op 2012-Oct-26
    • herstelt backwards-compatibiliteit met 0.1.X releases. De oude 0.1.X API ‘ s zijn gemarkeerd als verouderd in hun documentatie. Ze zullen worden verwijderd in een toekomstige release.
  • Release 0.2.0 on 2012-Oct-12
    • niet aanbevolen voor gebruik: deze release introduceerde breaking APIchanges (hernoemen van kernfuncties) zonder enig pad voor backwards-compatibiliteit. Toepassingen met transitieve afhankelijkheden op zowel de 0.2.x en 0.1.X API ‘ s kunnen deze versie niet gebruiken.
    • New: key-fn and: value-fn permit flexible transformation of values when reading & writing JSON
    • Support for reading large integers as BigInt
    • Optional support for reading decimals as BigDecimal
    • Performance improvements
  • Release 0.1.3 on 2012-mrt-09
    • schrijfstrings met tekens buiten het BMP repareren
  • Release 0.1.2 on 2011-Oct-14
    • betere parsing van hexadecimale teken escapes
    • fix EOF-handling bug
    • Fix DJSON-1: waarschuwingen voor reflectie
  • Release 0.1.1 on 2011-Jul-01
    • zorg ervoor dat afdrukken naar *out* altijd een PrintWriter gebruikt.
  • Release 0.1.0 on 2011-maart-18
    • Initial release.
    • Broncompatibel met clojure.contrib.json, behalve de naamsverandering.

Copyright en licentie

Copyright (c) Stuart Sierra, Rich Hickey, and contriburos 2012-2020.Alle rechten voorbehouden. Het gebruik en de distributie voorwaarden voor deze software worden gedekt door de Eclipse PublicLicense 1.0 (https://opensource.org/licenses/eclipse-1.0.php) die kan worden gevonden in het bestand epl-v10.html aan de basis hiervan distribution.By als u deze software op enigerlei wijze gebruikt, stemt u ermee in gebonden te zijn door de voorwaarden van deze licentie. U mag deze kennisgeving niet verwijderen, of een ander, uit deze software.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.