Fastjson: DisableCheckSpecialChar 过期用什么替代

Created on 5 Aug 2017  ·  14Comments  ·  Source: alibaba/fastjson

rt

needs info

All 14 comments

为什么要有这个需求?

因为对象的某个字段是json,输出会被转义
2017-08-05 15 33 57

image
image
公司有个C/S系统,Client是用的GBK解码,现在Server重构但需要兼容老版本Client,如果不用这个属性的话英文括号之类的会被转义,而客户端会识别为普通文本导致出错。所以我想问是什么原因导致这个属性被Disable的呢?有替代方案吗?

同有这个需求

image
我的问题不是由于DisableCheckSpecialChar导致的,而是FastJsonConfig默认构造函数中的SerializerFeature.BrowserSecure起的作用,希望对你们有启发。

redis 使用的fastjson 作为序列化工具,
image
也有这种问题,求解决

之前用的1.2.7,由于DisableCheckSpecialChar还有效,正常用的。
前几天升到1.2.47,由于DisableCheckSpecialChar失效了,可以设置SerializerFeature.DisableCheckSpecialChar,但不起作用,不应该转义的数据转义了

@wenshao
这种就需要不能再转义,否则传给对方怎么都是错的,支持一下以前这个特性吧。或者有没有其它替代方案。
我看从1.2.11版本开始就标记 SerializerFeature.DisableCheckSpecialChar。之前用的1.2.7 版本一直没问题,换成了1.2.47。这种数据序列化就有问题
tim 20180717141606

1.2.7 执行结果
_20180717142133

1.2.47 执行结果
_20180717142315

有需求

StringEscapeUtils.unescapeEcmaScript(paramData);用这个方法吧,可以去掉反斜杠

有需求,请解决,多次加解密的过程中使用了JSON.toJsonString(),结果多了好多反斜杠,一层层递加反斜杠

{
    "code": "0000",
    "desc": "",
    "data": "\"\\\"{\\\\\\\"bankUserId\\\\\\\":\\\\\\\"3412691eeaca4e4794a73bed0f59937a\\\\\\\",\\\\\\\"userId\\\\\\\":\\\\\\\"60eec629bc4e4320aaca49df8875bc1a\\\\\\\",\\\\\\\"elecCardNo\\\\\\\":\\\\\\\"4539837594582378\\\\\\\"}\\\"\""
}

实测,外面套一个StringEscapeUtils.unescapeJava方法即可去掉转义。

import org.apache.commons.lang.StringEscapeUtils;
StringEscapeUtils.unescapeJava(JSON.toJSONString(response))

集成第三方时,比如Springdoc,第三方输出是用 字符串 形式的Json,结果被Fastjson多加了反斜杠,怎么整?

  • -,估计是没人回答了,那只能转jackson了,好烦
Was this page helpful?
0 / 5 - 0 ratings