установить формат даты в Gson в JSP - PullRequest
0 голосов
/ 14 июля 2011

Я использую Gson для преобразования Json в объект на Java. Джсон, которого я пытаюсь преобразовать, имеет довольно сложную структуру.

{
   "name": "0",
   "dtExpiration": "07/14/2011 00:00",
   "quotaList": null,
   "question_array": [
      {
         "question": "0",
         "questionType": "resposta de texto",
         "min": "null",
         "max": "null",
         "responceList": [],
         "answer_array": [
            {
...

1. Вопрос: будет ли работать gson.fromJson (json, SuperClass.class), так как этот класс имеет ArrayLists?

Я не вижу, работает ли это, потому что у меня проблема с форматом даты. Программа выдает исключение:

Caused by: java.text.ParseException: Unparseable date: "07/15/2011 00:00"

Итак, я попытался указать формат, используя:

GsonBuilder gson = new GsonBuilder().setDateFormat("mm/dd/yyyy hh:mm");

но результат тот же.

2. Можете ли вы объяснить мне, как изменить формат даты с помощью GsonBuilder?

Спасибо

1 Ответ

4 голосов
/ 14 июля 2011

1. Вопрос: будет ли работать gson.fromJson (json, SuperClass.class), так как этот класс имеет ArrayLists?

Да, при условии, что структура SuperClass соответствует структуре JSON.

2. Можете ли вы объяснить мне, как изменить формат даты с помощью GsonBuilder?

Используйте большую букву "М" для месяца в году. Маленькая "м" для минуты в час.

Вот рабочий пример.

import java.io.FileReader;
import java.util.Date;
import java.util.List;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

public class Foo
{
  public static void main(String[] args) throws Exception
  {
    Gson gson = new GsonBuilder().setDateFormat("MM/dd/yyyy hh:mm").create();

    SuperClass sc = gson.fromJson(new FileReader("input.json"), SuperClass.class);
    System.out.println(gson.toJson(sc));
    // {"name":"0","dtExpiration":"07/14/2011 12:00","question_array":[{"question":0,"questionType":"resposta de texto","min":"null","max":"null","responceList":[],"answer_array":[{"id":1,"answer":"yes"},{"id":2,"answer":"no"}]}]}
  }
}

class SuperClass
{
  String name;
  Date dtExpiration;
  List<String> quotaList;
  Question[] question_array;
}

class Question
{
  int question;
  String questionType;
  String min;
  String max;
  List<String> responceList;
  Answer[] answer_array;
}

class Answer
{
  int id;
  String answer;
}

Обратите внимание, что в моей системе он изменился с дисплея часов 24H на дисплей часов 12H.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...