2016-08-02 105 views
2

傳遞給我的json中的一個字段與我想要反序列化此json的Java對象的字段名稱不同。假設我要反序列化:Gson反序列化:與Java對象字段名稱不同的Json字段名稱

{"bag": "LV"} 

Class MyClass { 
    String backpack; 
} 

等等領域backpack應該反序列化後具有價值LV

問題是MyClass是來自我無法更改或添加註釋的庫。我也不能控制傳給我的json。我想知道我可以如何配置Gson來做到這一點。所有其他領域完美匹配。

+1

看來你需要編寫一個自定義解串器 - 幸運的是,有一個正好大約討論[如何寫GSON一個自定義的JSON解串器(http://stackoverflow.com/questions/6096940/how- do-i-write-a-custom-json-deserializer-for-gson) - 給它一個鏡頭,讓我們知道這是否有幫助。它看起來像你在找什麼。 – ishmaelMakitla

+0

切換到Jackson並使用mixins。 –

回答

1
class CustomStrategy implements FieldNamingStrategy { 

    @Override 
    public String translateName(Field field) { 
     if (field.getName().equals("backpack")) { 
      return "bag"; 
     } 
     return field.getName(); 
    } 
} 

Gson gson = new GsonBuilder().setFieldNamingStrategy(new CustomStrategy()).create(); 
相關問題