2014-09-20 28 views
13

Ich frage mich, warum gibt es keine entschlossene Art, mit Jackson zu arbeiten. Ich will nur JSON Zeichenfolge analysieren:Kann nicht mit Jackson arbeiten

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

Aber ich wirklich verwirrt, was soll ich importieren, das zu tun. Nach diesem link habe ich versucht, mapper-asl.jar zu importieren. Aber ich habe diesen Compiler-Fehler:

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

Dann versuche ich jackson-core-2.4.2 und jackson-databind-2.4.2 zu importieren. So war es kein Compiler-Fehler, aber ich habe diese Runtime-Ausnahme statt (in Mapper Definitionszeile):

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

Leite mich bitte, was soll ich importieren mit Jackson zu arbeiten. Danke

+0

Wie andere darauf hinweisen, haben Sie eine Versionsverwechslung: 'org.codehaus.jackson' ist für Jackson 1.x und' com.fasterxml.jackson' für 2.x. Und etwas anderes, das Sie haben, hängt von Jackson 1.x ab (wahrscheinlich 1.9, Hadoop, DropWizard oder Jersey vielleicht?) – StaxMan

+0

Nein, das Problem ist gelöst. Ich sollte nur die 'jackson-annotation' Bibliothek hinzufügen. Vielen Dank. –

+0

Ok gut, froh, dass es gelöst wurde! – StaxMan

Antwort

14

Gebrauch diese Abhängigkeiten 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); 
    }  
} 

Versuch und lassen Sie mich wissen, ob es funktioniert.

+2

Es funktionierte, nachdem ich Jackson-Annotationen hinzugefügt hatte. Danke –

+1

Danke, ich habe jackson-databind gerade als maven dependence hinzugefügt und meine Projekte funktionieren. Prost – netto

+1

danke Arbeit für mich nach jackson Abhängigkeiten hinzufügen –

2

Sieht aus wie verwechselt Referenzen.

Sie können eine Bibliothek verwenden, der eine alte Version von Jackson selbst (das heißt das org.codehaus Paket) ...

I Referenz in der Regel nur Jackson durch Maven verwendet.

Etwas wie:

<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> 
Verwandte Themen