• jackson构建复杂Map的序列化


    1.序列化复杂的Map时,可能需要下面的方式

    import com.fasterxml.jackson.databind.JavaType;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import java.io.IOException;
    import java.lang.reflect.Type;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Map;
    
    
    
    public class JsonHelper {
        public static final ObjectMapper JsonMapper = new ObjectMapper();
        /**
         * String类型的javaType
         */
        public static final JavaType StringJavaType = JsonMapper.getTypeFactory().constructType(
                String.class);
    
        /**
         * 支持Map<String,String>
         */
        public static final JavaType StringStringMap = JsonMapper.getTypeFactory().constructMapType(HashMap.class,
                String.class, String.class);
    
        /**
         * 支持Map<String,Map<String,String>>
         */
        public static final JavaType StringStringStringMap = JsonMapper.getTypeFactory()
                .constructMapType(HashMap.class, StringJavaType, StringStringMap);
    
        /**
         * 支持Map<String,Map<String,Map<String,String>>>
         */
        public static final JavaType StringStringStringStringMap = JsonMapper.getTypeFactory()
                .constructMapType(HashMap.class, StringJavaType, StringStringStringMap);
    
        /**
         * 支持List<Object>
         */
        public static final JavaType ListObject = JsonMapper.getTypeFactory().constructCollectionType(ArrayList.class, Object.class);
    
        /**
         * 支持List<List<Object>>
         */
        public static final JavaType ListListObject = JsonMapper.getTypeFactory().constructCollectionType(ArrayList.class, ListObject);
    
        public static void main(String[] args) {
    
            String str = "{
    " +
                    ""1":
    " +
                    "{
    " +
                    ""key1": 
    " +
                    "	{
    " +
                    "	 
    " +
                    "    "a": "1",
    " +
                    "    "b": "1",
    " +
                    "    "c": "a",
    " +
                    "    "d": "2",
    " +
                    "    "e": "1"
    " +
    
                    "  },
    " +
                    "  "key2": {
    " +
                    "    "a": "1",
    " +
                    "    "b": "1",
    " +
                    "    "c": "b",
    " +
                    "    "d": "2",
    " +
                    "    "e": "1"
    " +
    
                    "  }
    " +
                    " 
    " +
                    "}
    " +
                    "}";
    
            try {
                Map<String, Map<String, Map<String, String>>> map = (Map<String, Map<String, Map<String, String>>>) JsonMapper
                        .<Map<String, Map<String, Map<String, String>>>>readValue(str,
                                StringStringStringStringMap);
    
                Map<String, String> stringStringMap = map.get("1").get("key1");
                System.out.println(stringStringMap);
            } catch (IOException e) {
                System.out.println("序列化出错");
            }
    }
  • 相关阅读:
    windows下nginx以服务自启动
    redis数据库可视化工具(RedisDesktopManager)
    myecplise中的svn如何切换账号
    oracle创建视图包含clob字段,报错:数据类型不一致:应为-,但却获得CLOB
    java.lang.UnsatisfiedLinkError: no jacob-1.18-x64 in java.library.path
    java中关于日期的处理
    js截取字符串
    关于sql developer中表或视图不存在以及查找日志窗口
    在html页面切换标题栏目时出现页面抖动
    严重: IOException while loading persisted sessions: java.io.EOFException
  • 原文地址:https://www.cnblogs.com/zhshlimi/p/10300159.html
Copyright © 2020-2023  润新知