0
我想分析到JSON這樣:GSON地圖密鑰對JSON
Map<Pair<String, Date>, Product>
由於JSON不能有一對具有鍵,也明顯給了我這樣的事情:
{"[email protected]":{"Name:"name","Brand":"brand"....}}
此時爲了實現我的目標,我將不得不創建我的Pair<String, Date>
對象序列化和反序列化方法。
這是我需要你的幫助,我不知道如何做到這一點。我是否必須創建MyPair
類延伸Pair
並執行JsonSerializer<Pair<String, Date>>
...?
謝謝你的時間!
編輯:
所以我試圖用TypeAdapter<T>
,但沒有運氣...
public class MyTypeAdapter extends TypeAdapter<Pair<String, Date>> {
@Override
public Pair<String, Date> read(JsonReader jsonReader) throws IOException {
if (jsonReader.peek() == JsonToken.NULL) {
jsonReader.nextNull();
return null;
}
String id = jsonReader.nextString();
Date evaluated = null;
try {
evaluated = mySimpleDateFormat.parse(jsonReader.nextString());
} catch (ParseException e) {
e.printStackTrace();
}
return new Pair<String, Date>(id,evaluated);
}
@Override
public void write(JsonWriter jsonWriter, Pair<String, Date> stringDatePair) throws IOException {
if (stringDatePair == null) {
jsonWriter.nullValue();
return;
}
String output = stringDatePair.first + "," + stringDatePair.second;
jsonWriter.value(output);
}
}
但是,當我登記我的TypeAdapter:
Type TYPE = new TypeToken<Pair<String, Date>>() {}.getType();
GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(TYPE, new MyTypeAdapter());
Gson g = builder.create();
String test = g.toJson(new Pair<String, Date>("123",new Date()));
此:
builder.registerTypeAdapter(TYPE, new MyTypeAdapter());
給我NullPointerException異常...... 爲什麼呢?
謝謝。