2014-09-20 6 views
13

Mi chiedo il motivo per cui non esiste un determinato modo di lavorare con Jackson. Voglio solo analizzare JSON stringa:Impossibile funzionare con Jackson

ObjectMapper mapper = new ObjectMapper(); 
Customer[] myObjects = mapper.readValue(file, Customer[].class); 

Ma davvero confuso cosa devo importare di farlo. In base a questo link, ho provato a importare mapper-asl.jar. Ma ottengo questo errore di compilazione:

The type org.codehaus.jackson.JsonParser cannot be resolved. It is indirectly referenced from required .class files 

poi cerco di importare jackson-core-2.4.2 e jackson-databind-2.4.2. Quindi non c'era errore di compilazione, ma ho avuto questa eccezione di runtime invece (in linea di definizione mapper):

java.lang.NoClassDefFoundError: com.fasterxml.jackson.annotation.JsonAutoDetect 

guida me per favore cosa devo importare a lavorare con Jackson. Grazie

+0

Come altri sottolineano, avete qualche mix di versioni: "org.codehaus.jackson' è per Jackson 1.xe' com.fasterxml.jackson' per 2.x. E qualcos'altro che hai dipende da Jackson 1.x (probabilmente 1.9, Hadoop, DropWizard o Jersey forse?) – StaxMan

+0

Nessun problema risolto. Dovrei solo aggiungere la libreria 'jackson-annotation'. Grazie. –

+0

Ok bene, sono contento che sia stato risolto! – StaxMan

risposta

14

uso queste dipendenze jackson-databind
jackson-annotations
jackson-core

public class JsonTest { 
    public static void main(String[] args) throws JsonProcessingException { 
    ObjectMapper mapper=new ObjectMapper(); 
    Map<String,String> dt=new Hashtable(); 
    dt.put("1", "welcome"); 
    dt.put("2", "bye"); 
    String jsonString = mapper.writeValueAsString(dt) 
    System.out.println(jsonString); 
    }  
} 

Prova e fammi sapere se funziona.

+2

Ha funzionato subito dopo aver aggiunto annotazioni di jackson. Grazie –

+1

Grazie, ho appena aggiunto il database di jackson come dipendenza da maven e i miei progetti funzionano. Saluti – netto

+1

grazie per avermi lavorato dopo aver aggiunto le dipendenze di jackson –

2

Sembra riferimenti misti.

Si potrebbe utilizzare una libreria che utilizza una vecchia versione di Jackson stesso (vale a dire il pacchetto org.codehaus) ...

Io di solito appena riferimento Jackson attraverso Maven.

qualcosa di simile:

<dependencies> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-annotations</artifactId> 
     <version>LATEST</version> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-core</artifactId> 
     <version>LATEST</version> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-databind</artifactId> 
     <version>LATEST</version> 
    </dependency> 
</dependencies>