Json工具转换实体类

133 阅读2分钟
//Json工具转换

public class FastJsonUtils {

    private static final SerializeConfig config;

    static {
        config = new SerializeConfig();
        // 使用和json-lib兼容的日期输出格式
        config.put(java.util.Date.class, new JSONLibDataFormatSerializer());
        // 使用和json-lib兼容的日期输出格式
        config.put(java.sql.Date.class, new JSONLibDataFormatSerializer());
    }

    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,
            SerializerFeature.WriteDateUseDateFormat
    };


    public static String toJSONString(Object object) {
        return JSON.toJSONString(object, config, features);
    }
    // 解决对象转json首字母小写的问题
    public static String toJSONString1(Object object) { return JSON.toJSONString(object, new PascalNameFilter()); }
    
    public static String toJSONString(Object object,String dateFormat) {
        return JSON.toJSONStringWithDateFormat(object, dateFormat, features);
    }

    public static String toJSONNoFeatures(Object object) {
        return JSON.toJSONString(object, config);
    }
    
    public static String toJSONNoConfig(Object object){
        return JSON.toJSONString(object,features);
    }

    public static Object toBean(String text) {
        return JSON.parse(text);
    }

    public static <T> T toBean(String text, Class<T> clazz) {
        return JSON.parseObject(text, clazz);
    }

    // 转换为数组
    public static <T> Object[] toArray(String text) {
        return toArray(text, null);
    }

    // 转换为数组
    public static <T> Object[] toArray(String text, Class<T> clazz) {
        return JSON.parseArray(text, clazz).toArray();
    }

    // 转换为List
    public static <T> List<T> toList(String text, Class<T> clazz) {
        return JSON.parseArray(text, clazz);
    }

    /**
     * 将javabean转化为序列化的json字符串
     * @param keyvalue
     * @return
     */
    public static Object beanToJson(KeyValue keyvalue) {
        String textJson = JSON.toJSONString(keyvalue);
        Object objectJson  = JSON.parse(textJson);
        return objectJson;
    }

    /**
     * 将string转化为序列化的json字符串
     * @param text
     * @return
     */
    public static Object textToJson(String text) {
        Object objectJson  = JSON.parse(text);
        return objectJson;
    }

    /**
     * json字符串转化为map
     * @param s
     * @return
     */
    public static Map stringToCollect(String s) {
        Map m = JSONObject.parseObject(s);
        return m;
    }

    /**
     * 将map转化为string
     * @param m
     * @return
     */
    public static String collectToString(Map m) {
        String s = JSONObject.toJSONString(m);
        return s;
    }
    
    /**
     * 将map转化为string
     * @param
     * @return
     */
    public static String listmapToString(List<Map<String, Object>> lm) {
        String s = JSONObject.toJSONString(lm);
        return s;
    }

   /**
     * @Title: obj2Json
     * @Description: 将对象转换为JSON字符串
     * @param obj
     *            //对象模型
     * @return String //转换完毕的字符串
     */
    public static String obj2Json(Object obj)
    {
        // String str =
        // JSON.toJSONString(obj,mapping,SerializerFeature.WriteMapNullValue);
        String str = JSON.toJSONString(obj, config);
        return str;
    }

    @SuppressWarnings("unchecked")
    public static Map<String,Object> json2Map(String json){
        return JSON.parseObject(json, Map.class);
    }
    
    @SuppressWarnings("rawtypes")
    public static List<HashMap> json2List(String json){
        return JSON.parseArray(json, HashMap.class);
    }

    public static <T>T objectToBean(Object o, Class c){
        return JSON.parseObject(JSON.toJSONString(o), (Type) c);
    }


    //读取json文件
    public static String readJsonFile() {
        String jsonStr = "";
        try {
            File jsonFile = new File("C:\Users\Administrator\Desktop\test.json");
            FileReader fileReader = new FileReader(jsonFile);
            Reader reader = new InputStreamReader(new FileInputStream(jsonFile),"utf-8");
            int ch = 0;
            StringBuffer sb = new StringBuffer();
            while ((ch = reader.read()) != -1) {
                sb.append((char) ch);
            }
            fileReader.close();
            reader.close();
            jsonStr = sb.toString();
            return jsonStr;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }


    public static void main(String[] args) {
        String s = readJsonFile();
        JSONArray movies = JSON.parseArray(s);
        for (int i = 0 ; i < movies.size();i++){
            JSONObject key = (JSONObject)movies.get(i);
            JSONArray movies1 = JSON.parseArray(String.valueOf(key.get("courseChapterSections")));
            jsonTestAdd(movies1);
        }
    }

    public static void jsonTestAdd(JSONArray movies1){
        for (int j = 0 ; j < movies1.size();j++){
            JSONObject key1 = (JSONObject)movies1.get(j);
            JSONArray movies2 = JSON.parseArray(String.valueOf(key1.get("courseChapterSections")));
            if(movies2!=null && movies2.size()>0){
                jsonTestAdd(movies2);
            }else{
                JSONObject progress1 =JSON.parseObject(String.valueOf(key1.get("progress")));
                if(progress1!=null && progress1.size()>0) {
                    String finishStatus=String.valueOf(progress1.get("finishStatus"));
                    if(finishStatus!=null && StringUtils.isNotBlank(finishStatus) &&finishStatus!="null"){
                        if(!"2".equals(finishStatus)){
                            System.out.println("'"+progress1.get("resourceId")+"',");
                        }
                    }
                }
            }
        }
    }
    
}