zoukankan      html  css  js  c++  java
  • JSON 操作与转化

    json与java格式的相互转换

    1: FastJson

    maven配置:

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.13</version>
        </dependency>

    util:

    package com.dw.study.util;
    
    /**
     * @Author dw
     * @ClassName FastJsonUtil
     * @Description
     * @Date 2020/5/7 22:48
     * @Version 1.0
     */
    
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONObject;
    import com.alibaba.fastjson.TypeReference;
    import com.alibaba.fastjson.serializer.JSONLibDataFormatSerializer;
    import com.alibaba.fastjson.serializer.SerializeConfig;
    import com.alibaba.fastjson.serializer.SerializerFeature;
    
    import java.util.List;
    import java.util.Map;
    
    /**
     * fastjson工具类
     * @version:1.0.0
     */
    public class FastJsonUtil {
    
        private static final SerializeConfig config;
    
        static {
            config = new SerializeConfig();
            config.put(java.util.Date.class, new JSONLibDataFormatSerializer()); // 使用和json-lib兼容的日期输出格式
            config.put(java.sql.Date.class, new JSONLibDataFormatSerializer()); // 使用和json-lib兼容的日期输出格式
        }
    
    
    
        private static final SerializerFeature[] features = {
                // 输出空置字段
                SerializerFeature.WriteMapNullValue,
                // list字段如果为null,输出为[],而不是null
                SerializerFeature.WriteNullListAsEmpty,
                // 数值字段如果为null,输出为0,而不是null
                SerializerFeature.WriteNullNumberAsZero,
                // Boolean字段如果为null,输出为false,而不是null
                SerializerFeature.WriteNullBooleanAsFalse,
                // 字符类型字段如果为null,输出为"",而不是null
                SerializerFeature.WriteNullStringAsEmpty
        };
    
    
        /**
         * 将对象转为json字符串
         *
         * @param object
         * @return
         */
        public static String objectToJsonByFeatures(Object object) {
            return JSON.toJSONString(object, config, features);
        }
    
        /**
         * 将对象转为json字符串
         *
         * @param object
         * @return
         */
        public static String objectToJson(Object object) {
            return JSON.toJSONString(object, config);
        }
    
        /**
         * 功能描述:把JSON数据转换成指定的java对象
         *
         * @param jsonData JSON数据
         * @param clazz    指定的java对象
         * @return 指定的java对象
         */
        public static <T> T jsonToBean(String jsonData, Class<T> clazz) {
            return JSON.parseObject(jsonData, clazz);
        }
    
    
        /**
         * 功能描述:把JSON数据转换成指定的java对象列表
         *
         * @param jsonData JSON数据
         * @param clazz    指定的java对象
         * @return List<T>
         */
        public static <T> List<T> jsonToList(String jsonData, Class<T> clazz) {
            return JSON.parseArray(jsonData, clazz);
        }
    
        /**
         * List<T> 转 json
         */
        public static <T> String listToJson(List<T> ts) {
            String jsons = JSON.toJSONString(ts);
            return jsons;
        }
    
    
        /**
         * 将json转为Map
         *
         * @param json
         * @param <T>
         * @return
         */
        @SuppressWarnings("unchecked")
        public static <T> Map<String, T> toMap(String json) {
            return (Map<String, T>) JSONObject.parseObject(json);
        }
    
    
        /**
         * 功能描述:把JSON数据转换成较为复杂的List<Map<String, Object>>
         *
         * @param jsonData JSON数据
         * @return List<Map < String, Object>>
         */
        public static List<Map<String, Object>> jsonToListMap(String jsonData) {
            return JSON.parseObject(jsonData, new TypeReference<List<Map<String, Object>>>() {
            });
        }
    
    
    }

     2、Jackson

    ObjectMapper的使用:

      <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-databind</artifactId>
          <version>2.8.3</version>
       </dependency>

    Util:

    /**
     * @Author dw
     * @ClassName JsonConvertUtil
     * @Description
     * @Date 2020/4/22 16:57
     * @Version 1.0
     */
    public class JsonConvertUtil {
    
        public static ObjectMapper mapper = new ObjectMapper();
    
        static {
            // 转换为格式化的json
            mapper.enable(SerializationFeature.INDENT_OUTPUT);
    
            // 如果json中有新增的字段并且是实体类类中不存在的,不报错
            mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        }
    
        /**
         * @return
         * @Author dw
         * @Description 对象转为String
         * @Date 2020/4/22 17:02
         * @Param
         */
        public String ObjectToString(Object object) throws JsonProcessingException {
            return mapper.writeValueAsString(object);
        }
    
        /**
         * @return
         * @Author dw
         * @Description 对象转byte数组
         * @Date 2020/4/22 17:03
         * @Param
         */
        public byte[] ObjectToByte(Object object) throws JsonProcessingException {
            return mapper.writeValueAsBytes(object);
        }
    
        /**
         * @return
         * @Author dw
         * @Description 对象写入到文件中
         * @Date 2020/4/22 17:04
         * @Param
         */
        public void ObjectToFile(String filePath, Object object) throws IOException {
            mapper.writeValue(new File(filePath), object);
    //        mapper.writeValue(System.out, object); //写到控制台
        }
    
    
        /**
         * @return
         * @Author dw
         * @Description 读取 Json String 到对象中
         * @Date 2020/4/22 17:07
         * @Param
         */
        public <T> Object JsonStringToObject(String str, Class<T> tClass) throws JsonProcessingException {
            return mapper.readValue(str, tClass);
        }
    
        /**
         * @return
         * @Author dw
         * @Description Json Byte数组转为对象
         * @Date 2020/4/22 17:10
         * @Param
         */
        public <T> Object byteArrToObject(byte[] byteArr, Class<T> tClass) throws IOException {
            return mapper.readValue(byteArr, tClass);
        }
    
        /**
         * @return
         * @Author dw
         * @Description list<Object> 转为JSon字符串
         * @Date 2020/4/22 17:15
         * @Param
         */
        public <T> String listToString(List<T> list) throws JsonProcessingException {
            return mapper.writeValueAsString(list);
        }
    
        /**
         * @return
         * @Author dw
         * @Description JSON字符串转为List
         * @Date 2020/4/22 17:17
         * @Param
         */
        public <T> List<T> jsonToList(String jsonStr) throws JsonProcessingException {
            return mapper.readValue(jsonStr, List.class);
        }
    
        /**
         * @return
         * @Author dw
         * @Description Map 转Json字符串
         * @Date 2020/4/22 17:21
         * @Param
         */
        public String mapToJSon(Map<Object, Object> map) throws JsonProcessingException {
            return mapper.writeValueAsString(map);
        }
        
        /**
         * @Author dw
         * @Description JSon 转 Map
         * @Date 2020/4/22 17:23
         * @Param 
         * @return 
         */
        public Map<Object, Object> jsonToMap(String jsonStr) throws JsonProcessingException {
            return mapper.readValue(jsonStr,Map.class);
        }
        
    }
  • 相关阅读:
    54、servlet3.0-ServletContainerInitializer
    53、servlet3.0-简介&测试
    52、[源码]-Spring源码总结
    51、[源码]-Spring容器创建-容器创建完成
    50、[源码]-Spring容器创建-Bean创建完成
    49、[源码]-Spring容器创建-创建Bean准备
    48、[源码]-Spring容器创建-初始化事件派发器、监听器等
    Atom编辑器入门到精通(四) Atom使用进阶
    Atom编辑器入门到精通(三) 文本编辑基础
    Atom编辑器入门到精通(二) 插件的安装和管理
  • 原文地址:https://www.cnblogs.com/dw3306/p/9385667.html
Copyright © 2011-2022 走看看