坚持2012 2016-06-30 13:19 采纳率: 0%
浏览 4184
已结题

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

这要怎么解决,求大神指点
  • 写回答

5条回答 默认 最新

  • 坚持2012 2016-06-30 13:25
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器