2013-09-24 71 views
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異常...... 爲什麼呢?

謝謝。

回答