簡體   English   中英

如何更改json中的日期格式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM