Skip to content

[JAVA] ClassCastException when serialize list<JSONObject> with fastjson 1.x version #1716

Closed
@galaxyxym

Description

Search before asking

  • I had searched in the issues and found no similar issues.

Version

Component(s)

Java

Minimal reproduce step

public class TestMain {

    static ThreadSafeFury fury = Fury.builder().withLanguage(Language.JAVA)
            .requireClassRegistration(false)
            .withRefTracking(true)
            .registerGuavaTypes(false)
            .withCompatibleMode(CompatibleMode.COMPATIBLE)
            .withScopedMetaShare(true)
            .buildThreadSafeFury();

    public static void main(String[] args) {
        DemoResponse resp = new DemoResponse();
        byte[] serialize = fury.serialize(resp);
        System.out.println("size:" + serialize.length);
    }
}


import com.alibaba.fastjson.JSONObject;
@Data
public class DemoResponse {

    private List<JSONObject> jsonObjs;

    public DemoResponse() {

    }
}
  <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.70</version>
  </dependency>

What did you expect to see?

serialize successfuly.

0.6.0-SNAPSHOT is OK with fastjson2 2.x version, is failed with fastjon 1.x version

What did you see instead?

java.lang.ClassCastException: org.apache.fury.serializer.collection.MapSerializers$StringKeyMapSerializer cannot be cast to org.apache.fury.serializer.collection.MapSerializers$JDKCompatibleMapSerializer

	at org.apache.fury.benchmark.state.JsonTest_DemoResponseFuryRefCodec_1_414493378_1225373914.<init>(JsonTest_DemoResponseFuryRefCodec_1_414493378_1225373914.java:51)
	at org.apache.fury.serializer.Serializers.createSerializer(Serializers.java:129)
	at org.apache.fury.serializer.Serializers.newSerializer(Serializers.java:104)
	at org.apache.fury.resolver.ClassResolver.createSerializer(ClassResolver.java:1188)
	at org.apache.fury.resolver.ClassResolver.getOrUpdateClassInfo(ClassResolver.java:1126)
	at org.apache.fury.Fury.write(Fury.java:314)
	at org.apache.fury.Fury.serialize(Fury.java:250)
	at org.apache.fury.Fury.serialize(Fury.java:204)
	at org.apache.fury.benchmark.state.JsonTest.testSerializeJso

Anything Else?

No response

Are you willing to submit a PR?

  • I'm willing to submit a PR!

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions