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("序列化出错");
            }
    }
  • 相关阅读:
    [JAVA] 冻结Excel的第一行或第一列
    [SoapUI] 比较两个不同环境下的XML Response, 从外部文件读取允许的偏差值,输出结果到文本文件
    [Study] 通过游戏学编程的网站
    [SoapUI] SoapUI+Groovy中"org.apache.xmlbeans.XmlException: error:
    [SoapUI] 通过Groovy写文本文件
    [SoapUI] context.expand 和 groovyUtils.getXmlHolder 有什么不一样
    Codeforces Round #355 (Div. 2) C 预处理
    Codeforces Round #355 (Div. 2) B
    Codeforces Round #355 (Div. 2) A
    Codeforces Round #324 (Div. 2) D
  • 原文地址:https://www.cnblogs.com/zhshlimi/p/10300159.html
Copyright © 2011-2022 走看看