【问题标题】:How to extract date from JSON with year, day and month as separate fields in format yyyy-mm-dd如何从 JSON 中提取日期,其中年、日和月作为单独的字段,格式为 yyyy-mm-dd
【发布时间】:2021-07-06 09:01:34
【问题描述】:

我是 JSON 新手,为了获取用户的交易详情,我正在从 API 的 JSON 响应中对 Web 服务之一进行 API 调用,交易日期如下所示

   {
    "trasanction_date": {
        "year": 2021,
        "month": 6,
        "day": 16
    }
}

我需要将上述日期转换为 yyyy-mm-dd 格式以将其插入 Cassandra。现在我的转换方式是,我正在从上面的字符串创建新的 JSONObject,比如

JSONObject trasaction = new JSONObject("{\"trasanction_date\":{\"year\":2021,\"month\":6,\"day\":16}}");

JSONObject date = trasaction.get("trasaction_date");

String year = date.getString("year");
String month = date.getString("month");
String day = date.getString("day");

//concatenating the final result to frame the date
String transactionDate = year+month+Day

有没有一种方法可以有效地将上述 JSON 格式转换为 yyyy-mm-dd 格式,而无需提取和连接字符串。请提前帮助解决上述问题。

【问题讨论】:

  • 您需要多一点才能匹配所需的模式(您缺少连字符并且没​​有强制执行月份和日期的位数 - 考虑使用 String.format(String,Object...) . 如果您的数据模型不仅仅是从客户端到数据库的传递,请考虑使用 java.time.LocalDate。

标签: java json date


【解决方案1】:

创建TransactionDate.java 类女巫包含三个字符串字段yearmonthday,带有getter 和setter。然后,创建TransactionDetails.java 具有TransactionDate 类型属性的类,并使用gson 库将JSON 字符串转换为Java 对象。 你可以看看这个article看看如何使用gson

然后在 TransactionDate.java 类中,您可以将 toString() 方法重写为类似这样的内容:

@Override
String toString() {
  return this.year + " " + this.month + " " + this.day;
}

最后,除了返回transactionDate 字符串,您还可以从TransactionDetails 获取TransactionDate 对象并返回它的字符串表示形式。

【讨论】:

  • @user13906258 太棒了!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-17
  • 1970-01-01
  • 2019-10-12
相关资源
最近更新 更多