2014-09-20 24 views
13

Neden Jackson ile çalışmak için kararlı bir yol olmadığını merak ediyorum. Sadece JSON dize ayrıştırmak istiyorum:Jackson ile çalışamaz

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

Ama gerçekten bunu yapmak içe gerektiğini karıştı. Buna göre link, mapper-asl.jar'u almayı denedim. Ama bu derleme hatası alıyorum:

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

Sonra jackson-core-2.4.2 ve jackson-databind-2.4.2 almayı deneyin. Yani derleme hata oluştu ama (mapper tanım doğrultusunda) yerine bu çalışma zamanı özel var:

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

Ben Jackson ile çalışmak ne ithal etmelidir lütfen beni yönlendirin. Teşekkürler

+0

Başkalarının da belirttiği gibi, bazı sürümlerin bir karışımı var: 'org.codehaus.jackson', Jackson 1.x ve' com.fasterxml.jackson' için 2.x. Ve sahip olduğunuz başka bir şey Jackson 1.x'e bağlı (muhtemelen 1.9, Hadoop, DropWizard veya Jersey belki?) – StaxMan

+0

Sorun çözülmedi. Sadece 'jackson-annotation' kütüphanesini eklemeliyim. Teşekkürler. –

+0

Tamam iyi, çözüldüğüne sevindim! – StaxMan

cevap

14

kullanım bu bağımlılıkları 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); 
    }  
} 

deneyin ve eğer çalışırsa bana bildirin.

+2

Jackson ek açıklamaları ekledikten hemen sonra çalıştı. Teşekkürler –

+1

Teşekkürler, ben sadece jackson veri tabanını maven bağımlılığı olarak ekledim ve projelerim işe yarıyor. Alkışlar – netto

+1

Teşekkürler jackson bağımlılıkları ekledikten sonra benim için –

2

Karışık referanslara benziyor. Sen Jackson kendisi eski bir sürümünü (yani org.codehaus paket) kullanan bir kütüphane ...

kullanıyor olabilir

Genellikle sadece Maven aracılığıyla Jackson başvuru.

şey gibi:

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