在jsp中设置Gson中的日期格式

时间:2011-07-14 15:49:13

标签: java json gson date-format

我正在使用Gson将Json转换为Java中的对象。我试图转换的Json结构非常复杂。

{
   "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 个答案:

答案 0 :(得分:4)

  

1.问题是:gson.fromJson(json,SuperClass.class)会工作,因为这个类有ArrayLists吗?

是的,前提是SuperClass结构与JSON结构匹配。

  

2.您能解释一下如何使用GsonBuilder更改日期格式吗?

每年使用大“M”。小“m”表示分钟。

这是一个有效的例子。

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;
}

请注意,在我的系统上,它从24小时时钟显示变为12小时时钟显示。