fastjson反序列问题 400 请求报错 -问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

fastjson反序列问题 400 请求报错 

2020-05-30 16:22:38 245 1

最近在做个类似Ext.Direct 的jquery 插件,这个插件写好了,服务器段用java实现的时候遇到了一个fastjson 反系列化的问题,需要把需要请求的json 反序列化 DirectRequest  

主要几个字段 action(把请求映射的某个类) method(把请求映射的某个action类的某个方法) data (传递给方法的参数)如 {"action":"Echo","method":"getByDate","data":["2014-11-18 11:23:34"]}

如果方法有参数 请求json data 不是空 可以正常反序列化,但是 如果方法没有参 数,json data 为null  如 {"action":"Echo","method":"getByDate","data":null} 这样反序列时就会出错com.alibaba.fastjson.JSONException: syntax error, expect [, actual null, pos 6

是我使用fastjson 不对,还是fastjson 有bug

取消 提交回答
全部回答(1)
  • kun坤
    2020-05-30 16:22:46

    DirectRequest类的第三个属性是JSONArray类型,所以异常提示“expect [”,改成:
    String str = "{"action":"Echo","method":"getByDate","data":[]}";
    就好了。

    ######

    String str = "{"action":"Echo","method":"getByDate","data":null}"; TmpModel model = JSON.parseObject(str,TmpModel.class);
    测试未发现楼主这样的问题,把反序列化的代码贴出来看看 ######
    DirectRequest类
    package entity; import com.alibaba.fastjson.JSONArray;

    public class DirectRequest { private String action; private String method;  private JSONArray data; public String getAction() { return action; } public void setAction(String action) { this.action = action; } public String getMethod() { return method; } public void setMethod(String method) { this.method = method; } public JSONArray getData() { return data; } public void setData(JSONArray data) { this.data = data; } }

    测试类

    package test;

    import com.alibaba.fastjson.JSON;

    import entity.DirectRequest;

    public class DirectRequestTest {    public static void main(String[] args) {   String str = "{"action":"Echo","method":"getByDate","data":null}";    DirectRequest req= JSON.parseObject(str,DirectRequest.class);    } }

    报错
    ######把data设置成List类型######

    引用来自“优雅先生”的评论

    DirectRequest类的第三个属性是JSONArray类型,所以异常提示“expect [”,改成: String str = "{\"action\":\"Echo\",\"method\":\"getByDate\",\"data\":[]}"; 就好了。 你说的我知道,还可以json不要data 属性 String str = "{\"action\":\"Echo\",\"method\":\"getByDate\"}";  只不过jquery插件我是仿写Ext.Direct,它是没有参数 data:null 我觉得这样好理解些,写成 data:[] 让人觉得方法还是需要参数一样,我是希望 String str = "{\"action\":\"Echo\",\"method\":\"getByDate\",\"data\":null}";反序列化后DirectRequest 的data 属性为null
    0 0
相关问答

40

回答

[@徐雷frank][¥20]什么是JAVA的平台无关性

大河人家 2018-10-29 23:55:20 144771浏览量 回答数 40

162

回答

惊喜翻倍:免费ECS+免费环境配置~!(ECS免费体验6个月活动3月31日结束)

豆妹 2014-10-29 17:52:21 226255浏览量 回答数 162

145

回答

【新手入门】云服务器linux使用手册

fanyue88888 2012-11-26 17:14:18 157770浏览量 回答数 145

8

回答

OceanBase 使用动画(持续更新)

mq4096 2019-02-20 17:16:36 337113浏览量 回答数 8

13

回答

[@饭娱咖啡][¥20]我想知道 Java 关于引用那一块的知识

心意乱 2018-10-31 18:44:12 142485浏览量 回答数 13

111

回答

OSS存储服务-客户端工具

newegg11 2012-05-17 15:37:18 295700浏览量 回答数 111

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 147287浏览量 回答数 22

18

回答

阿里云开放端口权限

xcxx 2016-07-20 15:03:33 646895浏览量 回答数 18

31

回答

[@倚贤][¥20]刚学完html/css/js的新手学习servlet、jsp需要注意哪些问题?

弗洛伊德6 2018-10-27 21:52:43 146082浏览量 回答数 31

24

回答

【精品问答】python技术1000问(1)

问问小秘 2019-11-15 13:25:00 475902浏览量 回答数 24
+关注
0
文章
13401
问答
问答排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载