2016-11-29 8 views
0

私はproguardを使うとGsonの解析に問題があります。 proguardのないデバッグモードとリリースモードでは、すべて正常に動作します。proguardを使ってandroidでGsonを解析する

これは私のJSON文字列です:

{ "テーブル":[{ "名": "プロフィール"、 "列":[{ "ラベル": "ID"、 "タイプ":」 {"label": "name"、 "type": "text"}、{"label": "age"、 "type": "integer"}、{"label" "ギア"、 "カスタム":真、 "リスト":真}}}、{"名前"} "人間"、 "タイプ" "タイプ"、 "タイプ"、 "テキスト"、 "プライマリ":真、{"ラベル": "タイプ"、 "テキスト" 、 "enum":true}、{"label": "name"、 "type": "text"}、{"label": "id_Profile"、 "type": "integer"、 "foreign_key":true}] {"label": "name"、 "name"、 "name"} {{"label": "id"、 "type": "text"、 "primary" {"label": "magic"、 "type": "integer"}、{"label": "id_Profile"、 "type": "integer"、 "foreign_key":true}] }]}

これらは私の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オブジェクト:

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を含めました。理由は何ですか?

+1

うわー、それは動作します – darwin

+0

あなたのクラスに@Keep注釈を試す問題を修正私のPOJOに@Keep注釈を追加、コメントしたよう!ありがとう。 @Keepアノテーションを使用するか、クラスを保持するためにproguardファイルのルールを設定する必要がある場合 – tufekoi

+0

なぜこれに 'kotlin'タグがありますか? –

答えて

1

ダーウィンはクラスが

関連する問題