2013-04-25 12 views
7

Json verilerinde daha etkili ayrıştırma yapmak için jackson ayrıştırıcısının nasıl kullanılacağını öğrenmeye çalışıyorum. Bunları kavanoz dosyaları var: Downloaded from this pageJacksonParser veri tabanı ve temel neden "APK için yinelenen dosya bulundu"?

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

Ve kodunda, ben sadece bir nesne diziye json ayrıştırmak deneyin: my Kategori sınıf olarak burada

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

gerekirse emin değil, ama kuyu:

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

} 

Her şey yolunda görünüyor, hata ya da uyarı yok.

i google bu hata için arama yaparken
[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 

, bu kavanoz dosyalar üzerinde ortak bazı sınıf olduğunu söylüyor: i derlemeye çalıştığınızda Ancak, bu hatayı veriyor. Ve ne yapacağım konusunda hiçbir fikrim yok. Yanlış yaptığım bir şey var mı? Yoksa eksik bir şey mi yapıyorum?

Şimdiden teşekkürler, herhangi bir yardım için teşekkür ederiz.

cevap

2

Aynı sorunu yaşıyorum. Eski sürümü kullanıyorum.

jackson-core-asl-1.9.12.jar

jackson-mapper-asl-1.9.12.jar

Aynı sayfanın "Son kararlı 1.x sürümü" nden indirebilirsiniz.

+0

1.9.12: çekirdek lgpl, mapper-lgpl Bu kavanozlar çalışmak, teşekkürler. – yahya

+0

1.x sürümlerini kullanmamaya öneriyorum. Ama 2.1.4 yerine deneyin - 2.x uyumludur. – StaxMan

+0

2.1.x sürümleri için indirme dosyasını nerede bulabilirsiniz? Sadece sitelerinde listelenen 2.2 ve 1.x içerikler görüyorum. –

12

Bu sorun 2.2.0 sürümü için rapor edilmiştir, bkz. this issue; ama 2.2.1'de çözülmelidir.

DÜZENLEME: ana sorunun, bu dosyaların, META-INF/ kavanozu altında bulunması gerektiğidir; eğer öyleyse, çatışma yoktur. Ve bu, yayınlandıktan sonra 2.2.1'in ne yapacağını.

+0

Bilgi için teşekkür ederiz. – yahya

+0

2.2.1'e geçiş benim için bu sorunu çözdü – Pheepster

3

Acı çektik, ama kavanozları elle yeniden inşa etmek o kadar da kötü değil.

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. Ne acı.

EDIT: Çoğu şeyi yapmak için ek açıklamalara ihtiyacınız olduğu ortaya çıkıyor. Bu alıştırma okuyucu için kaldı. Ayrıca download the jars for the new (fixed) version on Maven'u bulabileceğinizi öğrendim. steve yaptığı son düzenleme söylediği gibi