#java #json #date
Вопрос:
Я новичок в JSON, чтобы получить сведения о транзакции пользователя, я делаю вызов API одному из веб-сервисов в ответе JSON от API, дата транзакции указана ниже
{
"trasanction_date": {
"year": 2021,
"month": 6,
"day": 16
}
}
Мне нужно преобразовать указанную выше дату в формат гггг-мм-дд, чтобы вставить ее в 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 в формат гггг-мм-дд без извлечения и объединения строки. Пожалуйста, помогите с этим заранее, спасибо.
Комментарии:
1. Вам понадобится немного больше,чтобы соответствовать желаемому шаблону (у вас отсутствуют дефисы, а не количество цифр для месяца и дня — рассмотрите возможность использования String.format(Строка, объект…). Рассмотрите возможность использования java.time. Локализуйте, если ваша модель данных представляет собой нечто большее, чем переход от клиента к базе данных.
Ответ №1:
Создать TransactionDate.java
класс ведьмы содержит три строковых поля year
month
, day
с геттерами и сеттерами. Затем создайте TransactionDetails.java
класс, у которого есть свойство типа TransactionDate
и используйте библиотеку gson для преобразования строки JSON в объект java. Вы можете ознакомиться с этой статьей, чтобы узнать, как использовать gson
Затем внутри TransactionDate.java
класса вы можете переопределить toString()
метод на что-то вроде этого :
@Override
String toString() {
return this.year " " this.month " " this.day;
}
Наконец, вместо возвращаемой transactionDate
строки вы можете получить TransactionDate
объект TransactionDetails
и вернуть его строковое представление.
Комментарии:
1. @user13906258 отлично!!