最近在做个类似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
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);
测试未发现楼主这样的问题,把反序列化的代码贴出来看看 ######
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类型######
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。