我正在尝试学习如何使用jackson解析器,以便更有效地解析json数据。我有这些jar文件: Downloaded from this page
jackson-core-2.2.0.jar
jackson-annotations-2.2.0.jar
jackson-databind-2.2.0.jar
在代码中,我只是尝试将json解析为对象数组:
@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));
}
不确定是否有必要,但这里也是我的分类类:
@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;
}
}
一切似乎都没问题,没有错误或警告。但是当我尝试编译时,它会出现这个错误:
[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
当我在谷歌搜索这个错误时,它说这些jar文件有一些共同点。我不知道该怎么做......有什么我做错了吗?或者我做了一些缺失的事情?
在此先感谢,感谢任何帮助。
答案 0 :(得分:12)
2.2.0版本已报告此问题,请参阅this issue;但应在2.2.1中解决。
编辑:事实证明,主要问题是这些文件需要位于jar中的META-INF/
下;如果是这样,就没有冲突。这就是2.2.1一旦发布就会做的事情。
答案 1 :(得分:3)
有点痛苦,但手动重建罐子并不是那么糟糕。
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叹息。多么痛苦。
编辑:原来你需要注释才能完成大部分工作。这个练习留给读者。我还发现你可以download the jars for the new (fixed) version on Maven。
答案 2 :(得分:2)
我有同样的问题。 所以,我使用旧版本。
jackson-core-asl-1.9.12.jar
杰克逊映射器-ASL-1.9.12.jar
您可以从同一页的“最新稳定版1.x版”下载。
答案 3 :(得分:2)
史蒂夫在上一次编辑中说,你可以从Maven下载最新的罐子: http://repo1.maven.org/maven2/com/fasterxml/jackson/core/