2013-04-25 14 views
7

Sto cercando di imparare come usare il parser di jackson, per ottenere un parsing più efficace su dati json. Ho questi file jar: Downloaded from this pageDatabase JacksonParser e causa principale "Trovato file duplicato per APK"?

jackson-core-2.2.0.jar 
jackson-annotations-2.2.0.jar 
jackson-databind-2.2.0.jar 

E nel codice, cerco solo di analizzare un JSON in un array di oggetti:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    String json = ReadFromRaw(this, R.raw.json); 
    ArrayList<Category> categories = null; 
    try { 
     ObjectMapper mapper = new ObjectMapper(); 
     categories = mapper.readValue(json, mapper.getTypeFactory().constructCollectionType(List.class, Category.class)); 
     // categories = mapper.readValue(json, new TypeReference<List<Category>>() {}); 
    } catch (Exception e) { 
     Log.e("MainActivity", "Error: " + e.getMessage()); 
    } 

    SimpleListView myList = (SimpleListView) findViewById(R.id.myList); 
    myList.setAdapterWithItems(GetAdapter(categories)); 
} 

Non è sicuro se necessario, ma qui è la mia classe Categoria come bene:

@JsonIgnoreProperties({ "DisplayPriority" }) 
public class Category { 

    @JsonProperty("Id") 
    private String categoryId; 

    @JsonProperty("name") 
    private String categoryName; 

    public String getCategoryId() { 
     return categoryId; 
    } 

    public void setCategoryId(String categoryId) { 
     this.categoryId = categoryId; 
    } 

    public String getCategoryName() { 
     return categoryName; 
    } 

    public void setCategoryName(String categoryName) { 
     this.categoryName = categoryName; 
    } 

} 

Tutto sembra ok, non ci sono errori o avvisi. Ma quando provo a compilare, dà questo errore:

[2013-04-25 09:32:08 - Training - JacksonParser] Error generating final archive: Found duplicate file for APK: LICENSE 
Origin 1: C:\~\workspace\Training - JacksonParser\libs\jackson-core-2.2.0.jar 
Origin 2: C:\~\workspace\Training - JacksonParser\libs\jackson-databind-2.2.0.jar 

Per quanto la ricerca di questo errore su google, si dice che c'è qualche classe in comune su questi file jar. E non ho idea di cosa fare ... C'è qualcosa che faccio di sbagliato? O faccio qualcosa che manca?

Grazie in anticipo, qualsiasi aiuto è apprezzato.

risposta

2

Ho lo stesso problema. Quindi, io uso la vecchia versione.

jackson-core-asl-1.9.12.jar

jackson-mapper-asl-1.9.12.jar

È possibile scaricare da "Ultima versione 1.x stabile" della stessa pagina.

+0

1.9.12: core-LGPL, mapper-LGPL questi vasi funzionano, grazie. – yahya

+0

Mi raccomando di non utilizzare le versioni 1.x. Ma prova 2.1.4 invece - è 2.x compatibile. – StaxMan

+0

Dove è possibile trovare il download per le versioni 2.1.x? Vedo solo 2.2 e 1.x cose elencate sul loro sito. –

12

Questo problema è stato segnalato per la versione 2.2.0, vedere this issue; ma dovrebbe essere risolto in 2.2.1.

MODIFICA: risulta che il problema principale è che questi file devono trovarsi sotto META-INF/ in jar; se è così, non c'è conflitto. E questo è ciò che farà 2.2.1, una volta rilasciato.

+0

Grazie per l'informazione. – yahya

+0

Passare a 2.2.1 ha risolto questo problema per me – Pheepster

3

Tipo di dolore, ma non è poi così male ricostruire i vasi manualmente.

git clone git://github.com/FasterXML/jackson-core.git 
git clone git://github.com/FasterXML/jackson-databind.git 
cd jackson-core 
git checkout jackson-core-2.2.0b # not sure what the "b" is about 
mv src/main/resources/NOTICE src/main/resources/META-INF/ 
mv src/main/resources/LICENSE src/main/resources/META-INF/ 
mvn install 
# jar will be at target/jackson-core-2.2.0.jar 

cd ../jackson-databind 
git checkout jackson-databind-2.2.0 
mv src/main/resources/NOTICE src/main/resources/META-INF/ 
mv src/main/resources/LICENSE src/main/resources/META-INF/ 
mvn install 
# jar will be at target/jackson-databind-2.2.0.jar 

Le sospiro. Che dolore.

MODIFICA: Risulta che sono necessarie annotazioni per fare la maggior parte delle cose. Questo esercizio è lasciato al lettore. Ho anche scoperto che è possibile download the jars for the new (fixed) version on Maven.

Problemi correlati