Skip to content
This repository has been archived by the owner on Oct 23, 2024. It is now read-only.

版本 1.2.83 自定义反序列化 异常 #4383

Open
2259289435 opened this issue May 6, 2023 · 0 comments
Open

版本 1.2.83 自定义反序列化 异常 #4383

2259289435 opened this issue May 6, 2023 · 0 comments

Comments

@2259289435
Copy link

自定义类型序列化
正常走了序列化,也走了反序列化器,但最后却报错了。

        @Override
        public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {
            if(object != null){
                MetricType metricType = (MetricType)object;
                serializer.getWriter().writeString(AbstractTerminalType.getDangerousVal(metricType));
            }
        }
        @Override
        public MetricType deserialze(DefaultJSONParser parser, Type type, Object fieldName) {
            String in = parser.lexer.stringVal();
            if(isNullOrEmpty(in)){
                return null;
            }else{
                return new MetricType(in);
            }
        }
        @Override
        public int getFastMatchToken() {
            return 0;
        }

示例代码:

    @Data
    public static class A {
        private MetricType test;
    }
    @SneakyThrows
    public static void main(String[] args) {
        ParserConfig.getGlobalInstance().setAutoTypeSupport(true);
        Class.forName("sdp.common.utils.accuracy.GlobalAccuracyCodec");
        A a = new A();
        a.setTest(new MetricType("1.300"));
        List<A> l = new ArrayList<>();
        l.add(a);
        String str = JSON.toJSONString(l, SerializerFeature.WriteClassName);
        System.out.println(str);
        Object[] objArr = JSON.parseArray(str).toArray();
        System.out.println(Arrays.toString(objArr));
    }

异常

[{"@type":"xxx.A","test":"1.300"}]
Exception in thread "main" com.alibaba.fastjson.JSONException: syntax error, expect {, actual string, pos 65, fastjson-version 1.2.83
	at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.deserialze(JavaBeanDeserializer.java:506)
	at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.parseRest(JavaBeanDeserializer.java:1624)
	at com.alibaba.fastjson.parser.deserializer.FastjsonASMDeserializer_1_A.deserialze(Unknown Source)
	at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.deserialze(JavaBeanDeserializer.java:287)
	at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:405)
	at com.alibaba.fastjson.parser.DefaultJSONParser.parseArray(DefaultJSONParser.java:1243)
	at com.alibaba.fastjson.parser.DefaultJSONParser.parseArray(DefaultJSONParser.java:1169)
	at com.alibaba.fastjson.JSON.parseArray(JSON.java:612)
	at com.alibaba.fastjson.JSON.parseArray(JSON.java:592)
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant