当我使用proguard时,我只有Gson的解析问题。在没有proguard的调试模式和发布模式下,一切工作正常。Gson使用proguard在android上解析
这是我的JSON字符串:
{ “表”:[{ “Name”: “个人资料”, “列”:[{ “标签”: “ID”, “类型”:”文本”, “主”:真正},{ “标签”: “姓名”, “类型”: “文本”},{ “标签”: “年龄”, “类型”: “整数”},{ “标签” : “人”, “类型”: “整数”},{ “标记”: “齿轮”, “类型”: “齿轮”, “自定义”:真, “列表”:真}]},{ “名” : “齿轮”, “列”:[{ “标签”: “ID”, “类型”: “文本”, “主”:真},{ “标签”: “类型”, “类型”: “文本” “枚举”:真正},{ “标签”: “姓名”, “类型”: “文本”},{ “标签”: “id_Profile”, “类型”: “整数”, “foreign_key”:真正}] },{ “名称”: “动物”, “列”:[{ “标签”: “ID”, “类型”: “文本”, “主”:真},{ “标签”: “姓名”,”键入 “:” 文本 “},{” 标签 “:” 神奇”, “类型”: “整数”},{ “标签”: “id_Profile”, “类型”: “整数”, “foreign_key”:真正}] }]}
这些都是我的POJO:
public class Database {
private List<Table> tables;
public List<Table> getTables() {
return tables;
}
public void setTables(List<Table> tables) {
this.tables = tables;
}
}
public class Table {
private String name;
private List<Column> columns;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Column> getColumns() {
return columns;
}
public void setColumns(List<Column> columns) {
this.columns = columns;
}
}
我读包含JSON字符串和解析它这样的文件:
public Database getDatabase(Context context) throws IOException {
InputStream stream = context.getAssets().open(PATH);
String schema = getJsonSchema(stream);
Gson gson = new Gson();
return gson.fromJson(schema, Database.class);
}
但是,当我尝试从调用方法getTables()
我Database
object:
for (Table table : database.getTables()) {
//...
}
我收到此错误:java.lang.NullPointerException: Attempt to invoke interface method 'java.util.Iterator java.util.List.iterator()' on a null object reference
。我已经包含rules for proguard。任何想法是什么原因?
尝试在你的类 – darwin
哇它的工作原理@Keep注释!谢谢。当应该使用@Keep批注或在proguard文件中设置规则以保留类时? – tufekoi
为什么这有'kotlin'标签? –