如何使用Java中的GSON API自定义JSON中的特定日期字段?

时间:2014-12-11 06:07:05

标签: java json gson

我有一个类似下面的JSON结构。

{
"email":"abc.def@gmail.com",
"mobile":9911776556,
"customerLanguage":"English",
"sms_flag":1,
"ivr_flag":0,
"dateOfBirth":"19-11-1981",
"dateOfJoining":"08-10-2001"
}

现在我只想自定义dateOfBirth字段,我在下面尝试了但它改变了dateOfBirth和dateOfJoining。

Gson jsonConvertor = new GsonBuilder().setDateFormat("dd/mm/yyyy").create();
TestJson userAuthenticationDTO = jsonConvertor.fromJson(request_body, TestJson.class);

我的TestJson类具有以下结构。

TestJson - >

class TestJson{

   Date dateOfBirth;

   Date dateOfJoining;

  // other fields.....

}

TestJson对象包含两个修改日期字段,我只想修改一个?

2 个答案:

答案 0 :(得分:3)

使用gson执行此操作的简洁方法是编写并注册您自己的TypeAdapter,以适当的方式序列化您的TestJson类型,即。一个Date字段,另一个Date字段。

这个

Gson jsonConvertor = new GsonBuilder().setDateFormat("dd/mm/yyyy").create();

设置任何和所有Date值的格式。

答案 1 :(得分:1)

好像你需要使用keys

第一种方法可以是deserializejava.util.Map,然后只需要修改Java Map。

或以下内容

JSONObject object=new JSONObject(myJsonString);
JSONObject childobject=object.getJSONObject("dateOfJoining");

JSONObject modifiedjson=new JSONObject();
modifiedjson.put("value", formatedValue());