2012-05-01 11 views
8

Mi chiedevo perché www.json.org/anyone altrimenti non fornisce un pacchetto JAR ufficiale di org.json per il download? Tutte le domande che ho trovato su persone che chiedono dove possono scaricare i risultati JAR nelle risposte alla pagina che elenca solo i file sorgente.org.json JAR provisioning

sembra un po 'ingombrante per aspettarsi a tutti di scaricare ogni file di origine e prepararsi il file JAR.

risposta

14

Hai mai pensato di utilizzare Maven? per esempio, se si voleva un JAR per pars JSON si può solo includere ...

http://mvnrepository.com/artifact/org.codehaus.jackson/jackson-core-asl/1.9.6

<dependency> 
    <groupId>org.codehaus.jackson</groupId> 
    <artifactId>jackson-core-asl</artifactId> 
    <version>1.9.6</version> 
</dependency> 

in un pom.xml, questo vi darà il vaso per JSON.

O meglio ancora, utilizzare l'org.json uno ...

http://mvnrepository.com/artifact/org.json/json

<dependency> 
    <groupId>org.json</groupId> 
    <artifactId>json</artifactId> 
    <version>20090211</version> 
</dependency> 
+4

Solo un rapido avvertimento ... la versione di org.json che è disponibile nel repository Maven è molto più antica che la versione corrente su https GitHub: // github.com/douglascrockford/JSON-java. Ho avuto alcuni problemi con la versione di Maven che presumevo fossero bug risolti perché l'utilizzo dell'ultima versione risolveva direttamente i problemi per me. –

+0

La pessima soluzione qui è quella di passare all'implementazione java JSON di Crockford, biforcarla e creare un barattolo. L'ho fatto, ed è anche un progetto di maven, quindi puoi installarlo nel tuo repository o semplicemente creare un jar con esso. https://github.com/anatolyg/JSON-java –

+0

La versione 20131018 è anche nel repository mvn per coloro che si chiedono. – Johncl

1

L'implementazione da json.org da Douglas Crockford non è libero. Per fortuna, una Ricambi di quasi drop-in esiste (a quanto pare, il codice di Google confezionato da qualcun altro per Maven centrale):

<dependency> 
    <groupId>com.vaadin.external.google</groupId> 
    <artifactId>android-json</artifactId> 
    <version>0.0.20131108.vaadin1</version> 
</dependency> 

Aggiungi questo pom.xml invece di utilizzare il json.org uno. Abbiamo dovuto fare solo una piccola modifica al nostro codice per questo: il vaadin può lanciare JSONException in più posti, quindi abbiamo dovuto prenderli o passarli ai chiamanti (estendere la dichiarazione dei lanci).

+1

L'ho anche impacchettato su Maven e ha apportato una serie di modifiche per semplificare il porting. In particolare, JSONException è ora deselezionato. Vedi https://github.com/tdunning/open-json (disponibile anche via Maven) –

0

Attenzione che il software json.org ha una licenza non open source. Questo causa problemi a valle in molti casi.

Il problema è che la licenza è essenzialmente la licenza MIT, ma aggiunge una riga che dice che il software dovrebbe essere utilizzato solo per il bene, non il male. Questo suona bene, ma se devi farti firmare un avvocato aziendale, diventa brutto perché non esiste una definizione legale del consenso del "male". Se si utilizza la libreria di json.org, non è possibile inserire il software in Debian, ad esempio. Allo stesso modo il tuo software non può essere una dipendenza per qualsiasi progetto Apache.

Per contribuire a questo, ho adattato e confezionato l'androide clean-room riscrittura della biblioteca json.org. La fonte è su github ed è autorizzata da Apache. Vedi https://github.com/tdunning/open-json. Per utilizzare questa, aggiungere qualcosa di simile al vostro pom (o equivalente):

<!-- https://mvnrepository.com/artifact/com.tdunning/json --> 
<dependency> 
    <groupId>com.tdunning</groupId> 
    <artifactId>json</artifactId> 
    <version>1.3</version> 
</dependency> 

Ping me con richieste di pull o problemi su GitHub o come più vi piace.

0

Usando il pacchetto com.tdunnning può portare a conflitti di dipendenza, soprattutto se fate il vostro progetto a disposizione di altri come una biblioteca. L'implementazione non ha compatibilità al 100% con org.json

Quel pacchetto (com.tdunning) è stato biforcato a https://github.com/openjson/openjson con il pacchetto rinominato in com.github.openjson invece di org.json per evitare conflitti.

La dipendenza Maven:

<dependency> 
    <groupId>com.github.openjson</groupId> 
    <artifactId>openjson</artifactId> 
    <version>1.0.10</version> 
</dependency> 
Problemi correlati