clojure / data.JSON

JSON parser / generator to / from Clojure data structures.

Chave de metas:

  • Compatível com JSON spec por https://json.org/
  • Sem dependências externas

Releases e Informações de Dependência

Este projeto segue a versão de esquema MAIOR.MENOR.PATCH onde cada componente fornece alguma indicação relativa do tamanho da mudança, mas não segue a versionagem semântica. Em geral, todas as mudanças se esforçam para não quebrar (movendo-se para novos nomes ao invés de quebrar nomes existentes).

Última versão estável é a 2.0.1

CLI/deps.edn informações de dependência:

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

Leiningen informações de dependência:

o Maven dependency informações:

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

Outras versões:

  • Todas as Versões Lançadas

  • Desenvolvimento Instantâneos

  • imagem de Desenvolvimento de Repositórios

o Uso de

Documentação da API

Exemplo de uso:

(ns example (:require ))

para converter de / para cadeias JSON, use json/write-str e 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}

Note que estas operações não são simétricas: converter o datainto de Clojure para JSON é lossy.

Conversão de Chave/Valor, Tipos de

Você pode especificar um :key-fn para converter o mapa de teclas ou fora:

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

Você pode especificar um :value-fn para converter valores do mapa no modo como orout. O valor-fn será chamado com dois argumentos, a chave e o valor, e ele retorna o valor atualizado.

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

esteja ciente de que :value-fn só funciona em mapas (objetos JSON). Se a estrutura de dados do yourroot for, por exemplo, um vetor de datas, você precisará pré ou pós – processá-la fora dos dados.json. clojure.andar pode ser útil para isto.

ordem de chave-fn / valor-fn

se indicar tanto um :key-fn como um :value-fn ao ler, o valor-fn é chamado após a chave ter sido processada pela chave-fn.

O inverso é verdadeiro quando escrever:

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

Ler/Escrever uma Sequência

Você também pode ler JSON directamente a partir de um java.io.Leitor com json/reade escrita JSON diretamente para java.io.Escritor com json/write.

mais

outras opções estão disponíveis. Consulte a documentação da API para mais detalhes.

Informações de Desenvolvedor

  • GitHub do projeto
  • Como contribuir
  • Bug Tracker
  • Integração Contínua
  • Teste de Compatibilidade de Matriz

Log de Alteração

  • Versão 2.0.1 em 2021-Mar-19
    • Correcção DJSON-37: Correção de fora por um erro de leitura de cadeias longas, regressão 2.0.0
  • Versão 2.0.0 em 2021-Mar-19
    • Perf DJSON-35: Substituir PrintWriter com mais genérico Appendable, reduzir a moldagem
    • Perf DJSON-34: Mais eficiente de escrever para o caminho comum
    • Perf DJSON-32: Usar a opção do mapa em vez de variáveis dinâmicas (afeta leitura+escrita)
    • Perf DJSON-33: Melhorar a velocidade de leitura JSON seqüências de caracteres
    • Correcção DJSON-30: Correção mau teste
  • Versão 1.1.0 em 2021-Mar-5
    • Correcção DJSON-26: escrita-objeto deve verificar seq loop de var, não param
    • Usar mais recente parent pom (vai topar padrão clojure dep para 1.8.0)
    • Usar links diretos no “alt” classificador lib
  • Versão 1.0.0 em 2020-Fev-18
  • Versão 0.2.7 em 2019-Nov-18
    • Correcção DJSON-29: lançar a exceção de objecto em falta entradas (extra vírgulas)
  • Lançamento 0.2.6 em 2015-Mar-6
    • Modificar, construir, produzir um AOT pacote com o classificador “aot”
  • Lançamento 0.2.5 em 2014-Jun-13
    • Correcção DJSON-17: lançar a exceção no Infinito ou NaN flutuante pointvalues. Um comportamento antigo pode produzir JSON inválido.
  • libertar 0.2.4 em 2014-Jan-10
    • Pequena mudança no comportamento: clojure.data.json/pprint adiciona agora anewline após a sua saída, como clojure.core/pprint
    • Correcção DJSON-13: lavar a saída após pprint
    • Correcção DJSON-14: identificador de EOF dentro de caracteres de escape
    • Correcção DJSON-15: sintaxe incorreta no teste
  • Versão 0.2.3 em 2013-Ago-30
    • Acessórios DJSON-9: opção para escapar U+2028 e U+2029
    • Correcção DJSON-11: impressão desnecessária vírgulas com valor-fn
  • Versão 0.2.2 em 2013-Abr-07
    • Correcção DJSON-7: vírgulas extra ao remover pares de chaves / valores)
    • fixar DJSON-8: fluxo de saída errado em write-json
  • Release 0.2.1 on 2012-Oct-26
    • Restores backward-compatibility with 0.1.x releases. O older0. 1.x APIs são marcados como obsoletos em sua documentação. Eles serão removidos em um lançamento futuro.
  • Release 0.2.0 on 2012-Oct-12
    • Not recommended for use: this release introduced breaking APIchanges (renaming core functions) without any path forbackwards-compatibility. Aplicações com dependências transitivas em ambos os 0,2.X e 0.1.o x APIs não pode usar esta versão.
    • Novo:-tecla fn e :valor-fn permitir flexível transformationof valores ao ler & escrita JSON
    • Suporte para a leitura de grandes inteiros como BigInt
    • Opcional suporte para leitura de números decimais como BigDecimal
    • melhorias de Desempenho
  • Lançamento 0.1.3 em 2012-Mar-09
    • Corrigir a escrita de cadeias de caracteres que contém caracteres fora da BMP
  • Versão 0.1.2 em 2011-Out-14
    • Melhor análise dos caracteres hexadecimais escapa
    • Correcção EOF-tratamento de erro
    • Correcção DJSON-1: avisos de reflexão
  • Release 0.1.1 on 2011-Jul-01
    • Ensure that printing to *out* always uses a PrintWriter.
  • lançamento 0.1.0 em 2011-Mar-18
    • lançamento inicial.
    • Fonte-compatível com clojure.contrib.json, excepto a mudança de nome.

Copyright e licença

Copyright (c) Stuart Sierra, Rich Hickey, and contriburos 2012-2020.Todos os direitos reservados. Os Termos de uso e distribuição para este software são cobertos pelo Eclipse PublicLicense 1.0 (https://opensource.org/licenses/eclipse-1.0.php) que pode ser encontrado no ficheiro epl-v10.html na raiz deste distribution.By usando este software de qualquer forma, você está concordando em ser vinculado pelos termos desta licença. Você não deve remover este aviso, ou qualquer outra, deste software.

Deixe uma resposta

O seu endereço de email não será publicado.