content: package com.alibaba.fastjson2.autoType;
  
  import com.alibaba.fastjson2.JSONB;
  import com.alibaba.fastjson2.JSONReader;
  import com.alibaba.fastjson2.JSONWriter;
  import org.junit.jupiter.api.Test;
  
  import java.util.ArrayList;
  import java.util.HashMap;
  import java.util.List;
  import java.util.Map;
  
  import static org.junit.jupiter.api.Assertions.assertEquals;
  
  public class AutoTypeTest40_listBeanMap {
      @Test
      public void test_1() throws Exception {
          List list = new ArrayList();
          list.add(new HashMap<>());
  
          Bean bean = new Bean();
          bean.items = list;
  
          byte[] bytes = JSONB.toBytes(bean,
                  JSONWriter.Feature.WriteClassName,
                  JSONWriter.Feature.FieldBased,
                  JSONWriter.Feature.ReferenceDetection,
                  JSONWriter.Feature.WriteNulls,
                  JSONWriter.Feature.NotWriteDefaultValue,
                  JSONWriter.Feature.NotWriteHashMapArrayListClassName
          );
  
          JSONB.dump(bytes);
  
          Bean bean2 = (Bean) JSONB.parseObject(
                  bytes,
                  Object.class,
                  JSONReader.Feature.SupportAutoType,
                  JSONReader.Feature.FieldBased,
                  JSONReader.Feature.UseNativeObject
          );
  
          assertEquals(bean.items.getClass(), bean2.items.getClass());
          assertEquals(bean.items.size(), bean2.items.size());
          assertEquals(bean.items.stream().findFirst().get(), bean2.items.stream().findFirst().get());
      }
  
      public static class Bean {
          private List<ItemBase> items;
      }
  
      public abstract static class ItemBase {
      }
  
      @Test
      public void test_2() throws Exception {
          Map map = new HashMap();
          map.put("a", new HashMap<>());
  
          Bean2 bean = new Bean2();
          bean.items = map;
  
          byte[] bytes = JSONB.toBytes(bean,
                  JSONWriter.Feature.WriteClassName,
                  JSONWriter.Feature.FieldBased,
                  JSONWriter.Feature.ReferenceDetection,
                  JSONWriter.Feature.WriteNulls,
                  JSONWriter.Feature.NotWriteDefaultValue,
                  JSONWriter.Feature.NotWriteHashMapArrayListClassName
          );
  
          JSONB.dump(bytes);
  
          Bean2 bean2 = (Bean2) JSONB.parseObject(
                  bytes,
                  Object.class,
                  JSONReader.Feature.SupportAutoType,
                  JSONReader.Feature.FieldBased,
                  JSONReader.Feature.UseNativeObject
          );
  
          Map map1 = bean.items;
          Map map2 = bean2.items;
  
          assertEquals(bean.items.getClass(), bean2.items.getClass());
          assertEquals(bean.items.size(), bean2.items.size());
          assertEquals(map.get("a").getClass(), map2.get("a").getClass());
      }
  
      public static class Bean2 {
          private Map<String, ItemBase> items;
      }
  }
  