[英]Jersey + Jackson JSON date format serialization - how to change the format or use custom JacksonJsonProvider
[英]how to change date format in json
如何替換json中的數據格式? 例如,我有這樣的 json 對象
{
"dt1":"12-12-2020",
"street":"test",
"city":"test2",
"country":"test3",
"dt2":"12-11-2020"
}
結果我想得到
{
"dt1":"12/12/2020",
"street":"test",
"city":"test2",
"country":"test3",
"dt2":"12/11/2020"
}
我有不同的字段名稱,所以我們不需要依賴字段名稱只需要替換數據格式......我該怎么做???
假設您使用的是 Java 8 或更高版本,並且您擁有的 JSON 對象來自org.json.JSONObject
包,則可以通過以下方式完成:
// Example of jsonStr
/* String jsonStr = "{\n"
+ "\"dt1\":\"12-12-2020\",\n"
+ "\"street\":\"test\",\n"
+ "\"city\":\"test2\",\n"
+ "\"country\":\"test3\",\n"
+ "\"dt2\":\"12-11-2020\"\n"
+ "}";
*/
public String converter(String jsonStr) {
// jsonStr is our original JSON with the date in the dash format (e.g. "12-12-2020")
// Here we convert into our json object
JSONObject json = new JSONObject(jsonStr);
// Get the orginal date value
String dateStr = (String) json.get("dt1");
// Convert the date into new format and update the JSON key 'dt1' with the new value
json.put("dt1", dateConverter(dateStr));
return json.toString();
}
private String dateConverter(String dateStr) {
LocalDate date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("dd-MM-yyyy"));
return date.format(DateTimeFormatter.ofPattern("dd/MM/yyyy"));
}
注 1:Java 8 或更高版本的假設是由於日期轉換時的新LocalDate
對象。
注 2:這假設日期采用dd-MM-yyyy
格式而不是MM-dd-yyyy
格式。
注 3:我還會考慮將日期轉換移至 Utils 類。
我想到的一種方法是,您可以使用Gson庫將一種 json 格式轉換為另一種格式。 就像您使用Gson.fromJson將 Json 字符串轉換為 Java 對象,然后使用Gson.toJson從 Java 對象轉換回所需的 Json 字符串格式一樣。 讓我分享您嘗試的示例代碼:
Gson gsonFormat1 = new GsonBuilder().setDateFormat("mm-dd-yyyy").create();
String format1 = "{\n" +
"\"dt1\":\"12-12-2020\",\n" +
"\"street\":\"test\",\n" +
"\"city\":\"test2\",\n" +
"\"country\":\"test3\",\n" +
"\"dt2\":\"12-11-2020\"\n" +
"}";
//Assume Sample is POJO for above json
Sample sampleFormat1 = gsonFormat1.fromJson(format1, Sample.class);
Gson gsonFormat2 = new GsonBuilder().setDateFormat("mm/dd/yyyy").create();
//Your output String here
String s2 = gsonFormat2.toJson(sampleFormat1, Sample.class);
System.out.println("Format2 String => "+s2);
使用上述技術,您不需要知道任何日期字段名稱。 基本上所有日期類型字段都可以轉換為目標格式。 希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.