Skip to content

Dual nested generic Map deserialization exception #452

@zzl221000

Description

@zzl221000

avaje-jsonb version 3.8

import io.avaje.jsonb.Json; import io.avaje.jsonb.Jsonb; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.text.MessageFormat; import java.util.Map; public class TestNestedGeneric { @Json @Data @AllArgsConstructor @NoArgsConstructor public static class TestMapMap { private Map<String, Map<String, Entity>> dims; @Json @Data @AllArgsConstructor @NoArgsConstructor public static class Entity { private String name; private String value; } } public static void main(String[] args) { var res = new TestMapMap(Map.of("test", Map.of("123", new TestMapMap.Entity("name", "value")))); var jsonb = Jsonb.builder().build(); var p = jsonb.type(TestMapMap.class).toJson(res); System.out.println(p); jsonb.type(TestMapMap.class).fromJson(p).getDims().forEach((k,v)->v.forEach((k2,v2)-> System.out.println(MessageFormat.format("key:{0}, k {1},value:{2}", k,k2, v2)))); } }

Reuslt

Serializer

Success

Deserializer

Failed

{"dims":{"test":{"123":{"name":"name","value":"value"}}}} Exception in thread "main" java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class com.winhc.bigdata.flink.jobs.slideoutput.dynamic.TestNestedGeneric$TestMapMap$Entity (java.util.LinkedHashMap is in module java.base of loader 'bootstrap'; com.winhc.bigdata.flink.jobs.slideoutput.dynamic.TestNestedGeneric$TestMapMap$Entity is in unnamed module of loader 'app')	at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:684)	at com.winhc.bigdata.flink.jobs.slideoutput.dynamic.TestNestedGeneric.lambda$main$1(TestNestedGeneric.java:35)	at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:684)	at com.winhc.bigdata.flink.jobs.slideoutput.dynamic.TestNestedGeneric.main(TestNestedGeneric.java:35) 

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions