web-dev-qa-db-ja.com

ジャクソンと一緒に働くことはできません

Jacksonを使用する明確な方法がないのはなぜかと思っています。 JSON文字列を解析したいだけです。

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

しかし、私はそれを行うために何をインポートする必要があるかを本当に混乱させました。これによると link 、私はmapper-asl.jar。しかし、私はこのコンパイルエラーが発生します:

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

次に、インポートしようとしますjackson-core-2.4.2およびjackson-databind-2.4.2。そのため、コンパイルエラーはありませんでしたが、代わりにこのランタイム例外が発生しました(マッパー定義行で)。

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

Jacksonを操作するためにインポートするものを教えてください。ありがとう

15

これらの依存関係を使用します jackson-databind
jackson-annotations
ジャクソンコア

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);
    }    
}
16
Kumar

混乱した参照のように見えます。

ジャクソン自体の古いバージョンを使用するライブラリを使用している可能性があります(つまり、org.codehaus パッケージ)...

私は通常、Mavenを通じてJacksonを参照しています。

何かのようなもの:

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