zoukankan      html  css  js  c++  java
  • 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("序列化出错");
            }
    }
  • 相关阅读:
    vba create rectangle 矩形
    (zz)nnotation学习笔记2:关于Annotation与符号,还是要读arcmap帮助!!!
    backgroundworker
    C# , mongodb ,study
    工作中常用的dos命令 数据处理经验总结
    你需要明白的SQL SERVER书签查找(Bookmark Lookup)
    使用CalendarExtender
    js控制5秒后页面自动跳转
    HTML按秒数的页面跳转
    序列化与反序列化读取保存xml文件
  • 原文地址:https://www.cnblogs.com/zhshlimi/p/10300159.html
Copyright © 2011-2022 走看看