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("序列化出错");
        }
}
原文地址:https://www.cnblogs.com/zhshlimi/p/10300159.html