zoukankan      html  css  js  c++  java
  • Java序列化,解决字段为null与序列化后首字母变小写问题

    fastjson.jar

    package com.apt.utils;
    
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.serializer.ValueFilter;
    import com.apt.model.TBTEntity;
    
    import org.json.JSONObject;
    
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    
    /**
     * Created by Administrator on 2017/4/14.
     */
    
    public class JsonUtil {
        private final static  String tag="JsonUtil";
        /**
         * 反序列化一个实体
         * @param jsonString {"Address":"北京市通州区科创六街","BaiDuLat":39.814426895001,"BaiDuLng":116.55877636322,"CellId":41776,"Lac":4388,"Lat":39.808475,"Lng":116.552281,"MNC":"0"}
         * @param clazz CellInfo.class
         * @param <T>
         * @return
         */
        public static <T> Object parseObject(String jsonString,Class<T> clazz){
            try{
                if(jsonString==null||jsonString.equals("")){
                    return null;
                }
                return JSON.parseObject(jsonString, clazz);
            }
            catch(Exception ex){
                LogUtil.WriteError(ex,tag+"->toBean()");
                return null;
            }
        }
    
        /**
         * 反序列化一个泛型集合
         * @param json
         * @return
         */
        public static <T>List<T> parseArray(String json,Class<T> clazz){
            List<T> list=new ArrayList<T>();
            try{
                list = JSON.parseArray(json, clazz);
            }
            catch(Exception ex){
                LogUtil.WriteError(ex,tag+"->parseArray()");
            }
            return list;
        }
        /**
         * 反序列化一个具体集合
         * @param json
         * @return
         */
        public static List<TBTEntity> getListTBTEntity(String json){
            List<TBTEntity> list=new ArrayList<TBTEntity>();
            try{
                list = JSON.parseArray(json, TBTEntity.class);
            }
            catch(Exception ex){
                LogUtil.WriteError(ex,tag+"->getListTBTEntity()");
            }
            return list;
        }
    
        public static String toJSONString(Object clazz){
            String json="";
            try{
                json = JSON.toJSONString(clazz,filter);
            }
            catch(Exception ex){
                LogUtil.WriteError(ex,tag+"->toJSONString()");
            }
            json=formatJson(json);
            return json;
        }
    
        //解决序列化对对象为null的字段不序列化的问题
        private static ValueFilter filter = new ValueFilter() {
            @Override
            public Object process(Object obj, String s, Object v) {
                if(v==null)
                    return "";
                return v;
            }
        };
    
        //解决序列后首字母变成小写的问题
        private static String formatJson(String orgJson) {
            JSONObject jo = new JSONObject();
            try {
                JSONObject jsonObject = new JSONObject(orgJson);
                Iterator iterator = jsonObject.keys();
    
                while (iterator.hasNext()) {
                    String key = (String) iterator.next();
                    char chars[] = key.toCharArray();
                    if (key.length() > 1 && Character.isLowerCase(key.charAt(0))) {
                        chars[0] = Character.toUpperCase(chars[0]);
                    }
    
                    Boolean bl = jsonObject.isNull(key);
                    if (bl) {
                        jo.put(new String(chars), null);
                    } else {
                        Object object = jsonObject.get(key);
                        try {
                            if (object instanceof Number) {
                                jo.put(new String(chars),
                                        ((Number) object).intValue());
                            } else {
                                jo.put(new String(chars), jsonObject.getString(key));
                            }
                        } catch (Exception e) {
                            jo.put(new String(chars), jsonObject.getString(key));
                        }
                    }
                }
            } catch (Exception ex) {
                LogUtil.WriteError(ex,tag+"->formatJson()");
            }
            return jo.toString();
        }
    }
  • 相关阅读:
    golang学习笔记---flag包
    golang学习笔记 --- 结构体(struct)
    golang学习笔记---映射(map)
    golang学习笔记----slice(22)
    golang学习笔记---数组(22)
    golang学习笔记 ---数据类型转换(strconv包)
    golang学习笔记 ---slice(2)
    golang学习笔记 ---slice
    golang学习笔记--中英文字符串截取
    golang学习笔记 ---如何将interface转为int, string, slice, struct等类型
  • 原文地址:https://www.cnblogs.com/huangzhen22/p/6732248.html
Copyright © 2011-2022 走看看