zoukankan      html  css  js  c++  java
  • 转json工具类

    package com.csf.practicetest.json;
    
    
    import com.csf.practicetest.json.entity.RespObj;
    import com.csf.practicetest.json.entity.XcfRpoertAnalyseSimplify;
    
    import java.text.ParseException;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    /**
     * 测试类
     */
    public class JsonTest {
    
        public static void main2(String[] args) {
            Map<String, Object> obj = new HashMap<String, Object>();
            obj.put("k1", "k1v");
            obj.put("k2", 2);
            try {
                obj.put("k3", JsonUtil.parseDate("2013-01-02"));
            } catch (ParseException e) {
                e.printStackTrace();
            }
            System.out.println(JsonUtil.toJson(obj));
            System.out.println(JsonUtil.toJson(obj, "yyyy-MM-dd"));
            System.out.println(JsonUtil.toJson(obj));
    
        }
    
        /**
         * {"code":"200","type":"SUCCESS","message":[{"name":"2011-2015年公司海外营业收入(单位:亿元)","url":"report/AP201610270029422533/img-0140.png","id":"AP201607260016744779","dt":"20170108010655","p":null},{"name":"2011-2015年公司海外营业收入(单位:亿元)","url":"report/AP201610270029422533/img-0140.png","id":"AP201607260016744779","dt":"20170108010655","p":null}]}
         * JavaBean 转为json字符串 
         *
         * @param args
         */
        public static void main(String[] args) {
            Object message = getMessage();
    
            RespObj res = new RespObj();
            res.setCode("200");
            res.setType("SUCCESS");
            res.setMessage(message);
    
            System.out.println(JsonUtil.toJson(res));
        }
    
        public static Object getMessage() {
            List<XcfRpoertAnalyseSimplify> list = new ArrayList<XcfRpoertAnalyseSimplify>();
            XcfRpoertAnalyseSimplify entity = new XcfRpoertAnalyseSimplify();
            entity.setId("AP201605190014926455");
            entity.setDt("20170108003552");
            entity.setName("公司近年净利润及增长情况");
            entity.setUrl("report/AP201605190014926455/img-0139.png");
            list.add(entity);
    
            entity.setId("AP201607260016744779");
            entity.setDt("20170108010655");
            entity.setName("2011-2015年公司海外营业收入(单位:亿元)");
            entity.setUrl("report/AP201610270029422533/img-0140.png");
            list.add(entity);
            return list;
        }
    
    }
    
    
    -----------------------------------------------------------------------------------------------------------------------
    package com.csf.practicetest.json;
    
    import com.google.gson.*;
    import com.google.gson.reflect.TypeToken;
    import org.apache.commons.lang.StringUtils;
    import org.apache.log4j.Logger;
    
    import java.lang.reflect.Type;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.*;
    
    /**
     * json 转换工具  由对象转化为json
     *
     *  <!--json使用的包-->
     *  <dependency>
     *      <groupId>com.google.code.gson</groupId>
     *       <artifactId>gson</artifactId>
     *      <version>2.3.1</version>
     *      <scope>compile</scope>
     *  </dependency>
    
     *  <dependency>
     *      <groupId>commons-lang</groupId>
     *      <artifactId>commons-lang</artifactId>
     *      <version>2.6</version>
     *  </dependency>
     */
    public class JsonUtil {
    
        private static final Logger logger = Logger.getLogger("JsonUtil.class");
    
        public static final String EMPTY_JSON = "{}";
        public static final String EMPTY_JSON_ARRAY = "[]";
    
        private JsonUtil() {
        }
    
        private static final GsonBuilder builder = new GsonBuilder();
    
        private static final Gson gson = builder.serializeNulls().serializeSpecialFloatingPointValues()
                .registerTypeAdapter(Date.class, new JsonUtil().new JsonDateDeserializer()).create();
    
        /**
         * by default,this method allows serialize null-value properties
         */
        public static String toJson(Object src) {
            if (src == null) {
                return EMPTY_JSON;
            }
            return gson.toJson(src);
        }
    
        /**
         * default is medium : Mar 8, 2013 12:00:00 AM
         * @param obj
         * @param dateFormat
         *            Note that this pattern must abide by the convention provided
         *            by SimpleDateFormat class.
         */
        public static String toJson(Object obj, String dateFormat) {
            if (obj == null) {
                return EMPTY_JSON;
            } else if (StringUtils.isBlank(dateFormat)) {
                return gson.toJson(obj);
            }
    
            try {
                return builder.setDateFormat(dateFormat).serializeSpecialFloatingPointValues().create().toJson(obj);
            } catch (Exception e) {
    
                logger.error("Exception for toJson(obj, dateFormat) : " + e.getMessage());
                return gson.toJson(obj);
            }
        }
    
        public static String toJson(Object target, Type targetType) {
    
            String result = EMPTY_JSON;
    
            if (target == null)
                return result;
    
            try {
                if (targetType != null) {
                    result = gson.toJson(target, targetType);
                } else {
                    result = gson.toJson(target);
                }
            } catch (Exception ex) {
                logger.error("JsonUtil.toJson(target, targetType) exception, return empty json, exception for "
                        + target.toString() + " : " + ex.getMessage());
                if (target instanceof Collection || target instanceof Iterator || target instanceof Enumeration
                        || target.getClass().isArray()) {
                    result = EMPTY_JSON_ARRAY;
                } else
                    result = EMPTY_JSON;
            }
            return result;
        }
    
        /**
         * to covert a string to a class
         * @param json
         * @param classOfT
         */
        public static <T> T fromJson(String json, Class<T> classOfT) {
            return gson.fromJson(json, classOfT);
        }
    
        /**
         * to covert a string to a class
         * @param json
         * @param classOfT
         */
        public static <T> T fromJson(String json, Class<T> classOfT, String dateFormat) {
            return builder.setDateFormat(dateFormat).serializeSpecialFloatingPointValues().create().fromJson(json, classOfT);
        }
    
        public static <T> T fromJson(String json, Type type) {
            return gson.fromJson(json, type);
        }
    
        /**
         * to covert a JsonElement to a class
         * @param json
         * @param classOfT
         */
        public static <T> T fromJson(JsonElement jsonElem, Class<T> classOfT) {
            return gson.fromJson(jsonElem, classOfT);
        }
    
        /**
         * convert json string to list
         * @param jsonStr
         * @param type
         */
        public static List<?> jsonToList(String json, Type type) {
            List<?> objList = gson.fromJson(json, type);
            return objList;
        }
    
        /**
         * convert json to map
         * @param jsonStr
         */
        public static Map<?, ?> jsonToMap(String json) {
            Type type = new TypeToken<Map<?, ?>>() {
            }.getType();
            Map<?, ?> objMap = gson.fromJson(json, type);
            return objMap;
        }
    
        public static void main(String[] args) {
            Map<String, Object> obj = new HashMap<String, Object>();
            obj.put("k1", "k1v");
            obj.put("k2", 2);
            try {
                obj.put("k3", parseDate("2013-01-02"));
            } catch (ParseException e) {
                e.printStackTrace();
            }
            System.out.println(JsonUtil.toJson(obj));
            System.out.println(JsonUtil.toJson(obj, "yyyy-MM-dd"));
            System.out.println(JsonUtil.toJson(obj));
    
        }
    
        public class JsonDateDeserializer implements JsonDeserializer<Date> {
            public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
                    throws JsonParseException {
                String s = json.getAsJsonPrimitive().getAsString();
                try {
                    return parseDate(s);
                } catch (ParseException e) {
                    throw new JsonParseException(e);
                }
            }
        }
    
        public static Date parseDate(String s) throws ParseException {
            if (s.indexOf("-") == 4) {
                SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
                return df.parse(s);
            }
            String value = s;
            if (!value.endsWith("d")) {
                if (value.charAt(2) == '/')
                    return new SimpleDateFormat("MM/dd/yy").parse(value);
                else
                    return new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy").parse(value);
            } else {
                value = value.substring(0, value.length() - 1);
                if (value != null) {
                    if (value.startsWith(""") && value.endsWith("""))
                        return new SimpleDateFormat(""ddMMMyy"").parse(value);
                    else if (value.startsWith("'") && value.endsWith("'"))
                        return new SimpleDateFormat("''ddMMMyy''").parse(value);
                    else
                        throw new ParseException("incorrect format for Date(" + s + "): correct format is 'ddMMMyy'd", 0);
                }
            }
            return null;
        }
    
    }
    
    -----------------------------------------------------------------------------------------------------------------------
    package com.csf.practicetest.json.entity;
    
    import java.io.Serializable;
    
    public class RespObj implements Serializable {
    
        private String code;
        private String type;
        private Object message;
    
        public String getCode() {
            return code;
        }
    
        public void setCode(String code) {
            this.code = code;
        }
    
        public String getType() {
            return type;
        }
    
        public Object getMessage() {
            return message;
        }
    
        public void setMessage(Object message) {
            this.message = message;
        }
    
        public void setType(String type) {
            this.type = type;
        }
    
    }
    -----------------------------------------------------------------------------------
    package com.csf.practicetest.json.entity;
    
    
    /**
     * @author fenglei.ma 2017年1月6日 16:52
     */
    public class XcfRpoertAnalyseSimplify {
    
        private String name;// 图片名称
        private String url;// 图片url
        private String id;// 图片编号
        private String dt;
        private String p;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getUrl() {
            return url;
        }
    
        public void setUrl(String url) {
            this.url = url;
        }
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        public String getDt() {
            return dt;
        }
    
        public void setDt(String dt) {
            this.dt = dt;
        }
    
        public String getP() {
            return p;
        }
    
        public void setP(String p) {
            this.p = p;
        }
    
        @Override
        public String toString() {
            return "XcfRpoertAnalyseSimplify [name=" + name + ", url=" + url + ", id=" + id + ", dt=" + dt + ", p=" + p
                    + "]";
        }
    
    }
  • 相关阅读:
    Ubuntu下配置Viw Tab键缩进格数
    Windows文件传给Ubuntu出现乱码问题
    [Luogu] P4948 数列求和
    [Luogu]P1286 两数之和
    [Luogu]P2717 寒假作业
    [Luogu]P5110 块速递推
    Breeze魔兽编程交流论坛
    #pragma 预处理指令详解
    Api Hook 细析(一)
    CMS(网站内容管理系统)有哪些?
  • 原文地址:https://www.cnblogs.com/xiaolei2017/p/8743705.html
Copyright © 2011-2022 走看看