2013-04-25 21 views
7

Tôi đang cố gắng tìm hiểu cách sử dụng trình phân tích cú pháp jackson, để phân tích cú pháp hiệu quả hơn trên dữ liệu json. Tôi có những file jar: Downloaded from this pageDữ liệu và nguyên nhân cốt lõi của JacksonParser "Tìm thấy tệp trùng lặp cho APK"?

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

Và trong mã, tôi chỉ cố gắng phân tích một json vào một mảng các đối tượng:

@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)); 
} 

Không chắc nếu cần thiết, nhưng đây là lớp Category tôi như well:

@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; 
    } 

} 

Mọi thứ có vẻ ổn, không có lỗi hoặc cảnh báo. Nhưng khi tôi cố gắng biên dịch, nó đưa ra lỗi này:

[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 

Khi tôi tìm kiếm lỗi này trên google, nó nói có một số điểm chung trên các tệp jar này. Và tôi không có bất kỳ ý tưởng về những gì để làm như vậy ... Có điều gì đó mà tôi làm sai? Hoặc tôi làm một cái gì đó mất tích?

Cảm ơn trước, mọi trợ giúp đều được đánh giá cao.

Trả lời

2

Tôi có cùng một vấn đề. Vì vậy, tôi sử dụng phiên bản cũ.

jackson-core-asl-1.9.12.jar

jackson-mapper-asl-1.9.12.jar

Bạn có thể tải xuống từ "Phiên bản ổn định 1.x mới nhất" của cùng một trang.

+0

1.9.12: core-lgpl, mapper-lgpl Những lọ làm việc, cảm ơn. – yahya

+0

Tôi khuyên bạn nên sử dụng các phiên bản 1.x. Nhưng hãy thử 2.1.4 thay vào đó - nó tương thích với 2.x. – StaxMan

+0

Bạn có thể tìm bản tải xuống cho bản phát hành 2.1.x ở đâu? Tôi chỉ thấy các nội dung 2.2 và 1.x được liệt kê trên trang web của họ. –

12

Sự cố này đã được báo cáo cho bản phát hành 2.2.0, xem this issue; nhưng cần được giải quyết trong 2.2.1.

EDIT: chỉ ra rằng vấn đề chính là các tệp này cần phải được đặt dưới META-INF/ trong bình; nếu có, không có xung đột. Và đây là những gì 2.2.1 sẽ làm, một khi nó được phát hành.

+0

Cảm ơn bạn đã cung cấp thông tin. – yahya

+0

Chuyển sang 2.2.1 đã giải quyết vấn đề này cho tôi – Pheepster

3

Loại đau, nhưng không tệ khi xây dựng lại các lọ bằng tay.

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 sigh. Thật là một nỗi đau.

EDIT: Hóa ra bạn cần chú thích để thực hiện hầu hết mọi thứ. Bài tập đó được dành cho người đọc. Tôi cũng thấy rằng bạn có thể download the jars for the new (fixed) version on Maven.

Các vấn đề liên quan