FastJson 栽坑汇总

1、Request(该类型是webmagic框架定义的)经过redis消息传送后,其中的post参数(原本是NameValuePair[]类型数据)会转变为JSONArray类型数据,导致之后httpclient获取post参数数据进行NameValuePair[]强转操作报错。

下边是request的结构,set和get方法省略

public class Request {
    private String url;
    private String method;
    /**
     * Store additional information in extras.
     */
    private Map extras;
    /**
     * Priority of the request.
* The bigger will be processed earlier.
* @see us.codecraft.webmagic.scheduler.PriorityScheduler */ private long priority; }

NameValuePair[]存储在map中。

原因:后来查看redis的push方法,发现同事对它进行了封装,使用fastjson将request序列化为一个字符串,然后存储在redis中,而由于map的value是object类型即泛型,fastjson对泛型的处理是

Object对象类型-->JSONObject

Object[]数组类型-->JSONArray

还有就是基本数据类型、String、BigDecimal等等
所以产生了如上的错误。

你可能感兴趣的:(fastjson,redis)