加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

fastjson问题汇总

发布时间:2020-12-16 19:07:03 所属栏目:百科 来源:网络整理
导读:1、返回json有部分数据有bug,转换json异常$ref,如:“奶粉” || 已解决 // 解决循环引用,对应的配置见spring-web.xml 解决方式1: JSONObject.toJSONString(list,SerializerFeature.DisableCircularReferenceDetect); 解决方式2: bean id="fastJsonHttpM

1、返回json有部分数据有bug,转换json异常$ref,如:“奶粉” || 已解决 // 解决循环引用,对应的配置见spring-web.xml

解决方式1:

JSONObject.toJSONString(list,SerializerFeature.DisableCircularReferenceDetect);

解决方式2:

<bean id="fastJsonHttpMessageConverter"
class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
<property name="features">
<array value-type="com.alibaba.fastjson.serializer.SerializerFeature">
<value>DisableCircularReferenceDetect</value>
</array>
</property>
</bean>
<bean id="DisableCircularReferenceDetect" class="org.springframework.beans.factory.config.FieldRetrievingFactoryBean">
<property name="staticField" value="com.alibaba.fastjson.serializer.SerializerFeature.DisableCircularReferenceDetect"></property>
</bean>

2、fastjson对于float、double类型的数字精度丢失的问题

com.alibaba.fastjson.serializer.DoubleSerializer#write 有这么一段:

doubleText = Double.toString(doubleValue);
                if (doubleText.endsWith(".0")) {
                    doubleText = doubleText.substring(0,doubleText.length() - 2);
                }

对于float类型也是一样,com.alibaba.fastjson.serializer.FloatCodec#write

解决方案:

、重写序列化器;

、添加ValueFilter:

ValueFilter filter = new ValueFilter() {
            @Override
            public Object process(Object object,String name,Object value) {
                if (value instanceof BigDecimal || value instanceof Double || value instanceof Float) {
                    return new BigDecimal(value.toString());
                }
                return value;
            }
        };

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读