-1

これを逆シリアル化するのに問題があります:

{
   "backup_times":{
      "12":{
         "time":"2012-12-20 11:52:01",
         "status":"T"
      },
      "2":{
         "time":"2012-12-20 11:22:57",
         "status":"T"
      },
      "3":{
         "time":"2012-12-20 11:23:35",
         "status":"T"
      },
      "13":{
         "time":"2012-12-20 11:52:57",
         "status":"T"
      },
      "9":{
         "time":"2012-12-20 11:46:09",
         "status":"T"
      },
      "4":{
         "time":"2012-12-20 11:28:53",
         "status":"T"
      },
      "5":{
         "time":"2012-12-20 11:30:53",
         "status":"T"
      },
      "10":{
         "time":"2012-12-20 11:48:30",
         "status":"T"
      },
      "11":{
         "time":"2012-12-20 11:49:57",
         "status":"T"
      }
   }
}

この構造は、カスタムクラスに変換するのに有効ですか?

これは私が現在持っている現在のJavaクラスであり、基本的にはキーとして文字列のハッシュマップを含み、値としてJobサブクラスを含みます。

    public class RestoreDatesJsonReader {
    private HashMap<String, Job> backupTimes;

    public static class Job {
        private String time;
        private String status;
        public String getTime() {
            return time;
        }
        public void setTime(String time) {
            this.time = time;
        }
        public String getStatus() {
            return status;
        }
        public void setStatus(String status) {
            this.status = status;
        }
    }

    public HashMap<String,Job> getBackupTimes() {
        return backupTimes;
    }

    public void setBackupTimes(HashMap<String, Job> backup_times) {
        this.backupTimes = backup_times;
    }
}
4

1 に答える 1

1

GSON(デフォルト)は、JSONオブジェクトと一致する変数名を持つPOJOに依存しています。

backupTimesオブジェクトをに変更するbackup_timesと、これは問題なく機能します。

他のオプションは@SerializedName、フィールドに注釈を使用することです。

@SerializedName("backup_times") private HashMap<String, Job> backupTimes;

backup_timesこれは、JSON内がPOJO内にマップされることをGsonに通知しbackupTimesます。

(戻ってそうする時間ができたら、これをコメントから適切な回答に移動しました)

ここのJavadoc:http: //google-gson.googlecode.com/svn/tags/1.2.3/docs/javadocs/com/google/gson/annotations/SerializedName.html

于 2012-12-21T05:22:26.727 に答える