net.sf.json JSONUtil工具类 1.2.1

本文详细介绍了net.sf.json库中的JSONUtil工具类,它提供了便利的JSON操作方法,如对象转JSON字符串、JSON字符串转对象等。通过示例代码,展示了如何在Java项目中有效使用JSONUtil进行JSON数据的处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.jfai.kg.kafkacomsu.util;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import net.sf.ezmorph.object.DateMorpher;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;
import net.sf.json.JsonConfig;
import net.sf.json.util.CycleDetectionStrategy;
import net.sf.json.util.JSONUtils;
import net.sf.json.util.PropertyFilter;

/**  
  * @Package com.jfai.kg.kafkacomsu.util
  * @author wanglf
  * @Description: net.sf.json JSONUtil工具类
  * @date 2018年6月28日 上午6:39:37 
  * @version 1.2.1
  *
  */

public class JSONUtil {
    /**
     * 转成jsonOjbect对象
     * @param obj
     * @return
     */
    public static JSONObject toJsonOjbect(Object obj) {
        JsonConfig jsonConfig = new JsonConfig();
        jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);// 可防止hibernate模式下的关联关系子对象中包含父对象造成死循环
        JSONObject jsonObject = JSONObject.fromObject(obj, jsonConfig);
        return jsonObject;
    }

    /**
     * 转成jsonArray对象
     * @param obj
     * @return
     */
    public static JSONArray toJsonArray(Object obj) {
        JsonConfig jsonConfig = new JsonConfig();
        jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);// 可防止hibernate模式下的关联关系子对象中包含父对象造成死循环
        JSONArray jsonArray = JSONArray.fromObject(obj, jsonConfig);
        return jsonArray;
    }

    public static boolean isHasValue(String key, JSONObject jsonObject) {
        if (jsonObject == null || jsonObject.size() == 0 || jsonObject.isEmpty() || jsonObject.isNullObject()) {
            return false;
        }
        if (jsonObject.containsKey(key) && jsonObject.get(key) != null && jsonObject.get(key).toString().trim().length() != 0) {
            return true;
        }
        return false;
    }

    public static String getValue(String key, JSONObject jsonObject) {
        return getString(key, jsonObject);
    }

    public static String getString(String key, JSONObject jsonObject) {
        if (jsonObject == null || jsonObject.size() == 0 || isHasValue(key, jsonObject) == false) {
            return null;
        } else {
            return jsonObject.getString(key);
        }
    }

    public static void main(String[] args) {
        String string = new String("");
        System.out.println("" == "");
        System.out.println(string == "");
    }

    /**
     * json串或jsonobject对象转成Map
     * @param obj
     * @return
     */
    public static Map<?, ?> jsonToMap(Object obj) {
        JSONObject jsonObject = null;
        if (obj instanceof JSONObject) {
            jsonObject = (JSONObject) obj;
        } else {
            jsonObject = JSONObject.fromObject(obj);
        }

        Map<Object, Object> map = new HashMap<Object, Object>(jsonObject.size());
        Iterator<?> it = jsonObject.keys();
        while (it.hasNext()) {
            Object key = it.next();
            Object value = jsonObject.get(key);
            if (value instanceof JSONObject) {
                map.put(key, jsonToMap(value));
            } else if (value instanceof JSONArray) {
                map.put(key, jsonArrToList(value));
            } else {
                map.put(key, value);
            }
        }

        return map;
    }

    /**
     * list串或jsonArray对象转成list
     * @param obj
     * @return
     */
    @SuppressWarnings({ "unchecked", "rawtypes" })
    public static List<?> jsonArrToList(Object obj) {

        JSONArray jsonArray = null;
        if (obj instanceof JSONArray) {
            jsonArray = (JSONArray) obj;
        } else {
            jsonArray = JSONArray.fromObject(obj);
        }

        List list = new ArrayList(jsonArray.size());
        Iterator<?> it = jsonArray.iterator();
        while (it.hasNext()) {
            Object next = it.next();
            if (next instanceof JSONObject) {
                list.add(jsonToMap(next));
            } else if (next instanceof JSONArray) {
                list.add(jsonArrToList(next));
            } else {
                list.add(next);
            }
        }

        return list;
    }

    /**
     * json串转java对象
     * @param jsonStr json串
     * @param rootClass 要转成的主对象
     * @param subClassMap 主对象中包含的list类型的属性Map 格式:subClassMap.put("iordersegments", IorderSegment.class); key是子对象在主对象中的属性名, value是子对象类型
     * @return
     */
    @SuppressWarnings("unchecked")
    public static <T> T jsonToBean(String jsonStr, Class<T> rootClass, Map<String, Class> subClassMap) {
        JsonConfig filterNullConfig = new JsonConfig();
        // 过滤掉参数值为null的参数,防止后边的时间转换出错
        filterNullConfig.setJsonPropertyFilter(new PropertyFilter() {
            @Override
            public boolean apply(Object clazz, String name, Object value) {
                boolean isFilter = false;
                if (value == null || "".equals(value)) {
                    isFilter = true;
                }
                return isFilter;
            }
        });

        JSONObject jsonObject = JSONObject.fromObject(jsonStr, filterNullConfig);

        String[] dateFormats = new String[] { "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd", "yyyy-MM-dd HH:mm" };// 不过好像只有 yyyy-MM-dd HH:mm:ss 格式有效
        JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(dateFormats));

        JsonConfig jsonConfig = new JsonConfig();
        jsonConfig.setRootClass(rootClass);
        if (subClassMap != null && subClassMap.size() > 0) {
            jsonConfig.setClassMap(subClassMap);
        }

        return (T) JSONSerializer.toJava(jsonObject, jsonConfig);
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值