gson将json格式的字符串转成java对象,json字符串中long怎么转变不会报错?

gson将json格式的字符串转成java对象,json字符串中long怎么转变不会报错?

public static void main(String[] args) {
long timel=12323232L;
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time=sdf.format(timel);
System.out.println(time);//正常

Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
String obj="[{\"name\":\"caochuankui\",\"time\":"+timel+"}]";
JSONArray objo=new JSONArray(obj);
GsonTest gt=gson.fromJson(objo.toString(), GsonTest.class);//报错
System.out.println(gt.getTime());

}
}

错误信息如下:
1970-01-01 11:25:23
Exception in thread "main" com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:200)
at com.google.gson.Gson.fromJson(Gson.java:810)
at com.google.gson.Gson.fromJson(Gson.java:775)
at com.google.gson.Gson.fromJson(Gson.java:724)
at com.google.gson.Gson.fromJson(Gson.java:696)
at com.pagecofig.util.GsonTest.main(GsonTest.java:67)
Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $
at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:387)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:189)
... 5 more

这要怎么解决,求大神指点

哪位大神知道,麻烦指点一下,这个问题困扰一天了,现在的项目模块化调用的时候post请求的返回值是一个json格式的字符串,我需要把这个json格式的字符串转变成自己需要的对象,但是这个json中的时间类型都是long,然后set到实体类Date类型的时候就总是报错,不知道代码要怎么写,更改实体类怕影响其它模块,求帮忙,没分了,有分都给点

java.lang.IllegalStateException: 非法参数 异常

String time=sdf.format(timel); 是i这里,传入的参数,肯定异常

最简单的方式 :
GsonTest 这个类里的时间可以设置成 String ,用的时间再转成long

不管怎么办,得到的数据和你的实体类的类型不同,必须做转型了。你主要的问题应该是不想改实体类,怕影响其他功能。那可采用以下办法
1、复制原有实体类,再做一个新的,新的类的日期型设置为long,用新对象转换,然后把值再赋值到原有实体类。
2、要么就干脆用map转换json,然后自己再给实体类赋值。

使用同样类型接过来,然后再转换为你想要的类型就可以了,在写映射的实体类时确定那个字段的类型。