use 1.2.7 source code in mysql project,now used 1.2.29 jar
the fastjson source code is throws exception , like this。
Caused by: java.lang.ClassCastException: java.util.HashMap$Node cannot be cast to java.util.HashMap$TreeNode
at java.util.HashMap$TreeNode.moveRootToFront(HashMap.java:1827) ~[?:1.8.0_102]
at java.util.HashMap$TreeNode.treeify(HashMap.java:1944) ~[?:1.8.0_102]
at java.util.HashMap$TreeNode.split(HashMap.java:2170) ~[?:1.8.0_102]
at java.util.HashMap.resize(HashMap.java:713) ~[?:1.8.0_102]
at java.util.HashMap.putVal(HashMap.java:662) ~[?:1.8.0_102]
at java.util.HashMap.put(HashMap.java:611) ~[?:1.8.0_102]
at com.huawei.appmarket.cachesys.datamanager.CacheJSONParser.getUnifyRef(CacheJSONParser.java:703) ~[classes/:?]
at com.huawei.appmarket.cachesys.datamanager.CacheJSONParser.setUnifyStringValue(CacheJSONParser.java:667) ~[classes/:?]
at com.huawei.appmarket.cachesys.datamanager.CacheJSONParser.parseMap(CacheJSONParser.java:396) ~[classes/:?]
at com.huawei.appmarket.cachesys.datamanager.CacheMapDeserializer.deserialze(CacheMapDeserializer.java:39) ~[classes/:?]
at com.alibaba.fastjson.parser.deserializer.MapDeserializer.deserialze(MapDeserializer.java:39) ~[fastjson-1.2.29.jar:?]
at com.huawei.appmarket.cachesys.datamanager.CacheJSONParser.parseMap(CacheJSONParser.java:298) ~[classes/:?]
at com.huawei.appmarket.cachesys.datamanager.CacheJSONParser.parse(CacheJSONParser.java:81) ~[classes/:?]
at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1301) ~[fastjson-1.2.29.jar:?]
at com.huawei.appmarket.cachesys.datamanager.CacheJSONProcesser.toObject(CacheJSONProcesser.java:176) ~[classes/:?]
at com.huawei.appmarket.cachesys.DataUtils.write(DataUtils.java:299) ~[classes/:?]
at com.huawei.appmarket.cachesys.LoadInterfaceData.loadNewAppEditorDesc(LoadInterfaceData.java:1010) ~[classes/:?]
... 10 more
5条答案
按热度按时间mjqavswn1#
com.huawei.appmarket.cachesys.datamanager.CacheJSONParser
com.alibaba.fastjson.parser.deserializer.MapDeserializer
这两个类的代码能发给我看一下吗?
hyrbngr72#
@wenshao
com.huawei.appmarket.cachesys.datamanager.CacheJSONParser: 这个类的代码
gajydyqb3#
@wenshao
MapDeserializer 这个类就是fastjson 1.2.29 里面的源码
原因是是这样: 我jar 从fastjson 1.2.7 升级到了1.2.29
我们之前重写了上面的那个类 但是里面的代码还是基于之前1.2.7版本的, 我只是改了下对应的语法报错。
不知道是不是版本代码不兼容~
t30tvxxf4#
@wenshao 下面这个报错 是不是也是我们使用的源码也得基于最新版本的来写 ,是不是版本上代码不兼容,
我们使用的方式 1\使用jar , 2、 同时也重写了里面的类
com.alibaba.fastjson.JSONException: autoType is not support. com.huawei.appmarket.cachesys.Utils.CacheValue
at com.alibaba.fastjson.parser.ParserConfig.checkAutoType(ParserConfig.java:869) ~[fastjson-1.2.29.jar:?]
at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:325) ~[fastjson-1.2.29.jar:?]
at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1335) ~[fastjson-1.2.29.jar:?]
at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1301) ~[fastjson-1.2.29.jar:?]
at com.alibaba.fastjson.JSON.parse(JSON.java:148) ~[fastjson-1.2.29.jar:?]
at com.alibaba.fastjson.JSON.parse(JSON.java:139) ~[fastjson-1.2.29.jar:?]
---- 这个貌似这样就能解决。 https://github.com/alibaba/fastjson/wiki/enable_autotype
kwvwclae5#
能否把需求直接提过来,而不是修改源码实现,修改源码我不好做兼容,每次改动不会考虑你的需求的,没有回归测试,就没有保证。