All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.acyou.leo.framework.util.JSONUtil Maven / Gradle / Ivy

package cn.acyou.leo.framework.util;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

import java.util.Map;

/**
 * @author youfang
 * @version [1.0.0, 2023/2/27 15:40]
 **/
@Slf4j
public class JSONUtil {

    /**
     * 覆盖 合并两个JSON属性
     *
     * @return {@link JSONObject}
     */
    public static JSONObject merge(String sourceStr, String targetStr) {
        return WorkUtil.swallowException(() -> {
            JSONObject source = JSON.parseObject(sourceStr);
            JSONObject target = JSON.parseObject(targetStr);
            return merge(source, target, true);
        });
    }

    /**
     * 覆盖 合并两个JSON属性
     *
     * @param source 源
     * @param target 目标
     * @return {@link JSONObject}
     */
    public static JSONObject merge(JSONObject source, JSONObject target) {
        return merge(source, target, true);
    }

    /**
     * 合并两个JSON属性
     *
     * @param source 源
     * @param target 目标
     * @param cover 覆盖
     * @return {@link JSONObject}
     */
    public static JSONObject merge(JSONObject source, JSONObject target, boolean cover) {
        if (cover) {
            source.putAll(target);
        } else {
            Map innerMap_source = source.getInnerMap();
            Map innerMap_target = target.getInnerMap();
            innerMap_target.forEach((x, v) -> {
                if (!innerMap_source.containsKey(x)) {
                    source.put(x, v);
                }
            });
        }
        return source;
    }

    /**
     * 从JSON字符串 根据键获取值
     *
     * @param str str
     * @param key 键
     * @return {@link String} (字符串)
     */
    public static String getByKey(String str, String key) {
        if (StringUtils.isNotBlank(str)) {
            try {
                JSONObject jsonObject = JSON.parseObject(str);
                return jsonObject.getString(key);
            } catch (Exception e) {
                log.error("解析JSON出错", e);
            }
        }
        return null;
    }

    /**
     * 从JSON字符串 根据键获取值
     * 

* 注意:必须是确认的类型 * * @param str str * @param key 键 * @return {@link T} (类型) */ @SuppressWarnings("unchecked") public static T getObjectByKey(String str, String key) { if (StringUtils.isNotBlank(str)) { try { JSONObject jsonObject = JSON.parseObject(str); return (T) jsonObject.get(key); } catch (Exception e) { log.info("获取属性出错", e); } } return null; } /** * 为JSON字符串设置键值 * * @param str str * @param key 键 * @param val 值 * @return {@link String} */ public static String setByKey(String str, String key, Object val) { JSONObject obj = new JSONObject(); if (StringUtils.isNotBlank(str)) { try { obj = JSON.parseObject(str); } catch (Exception e) { log.error("解析JSON出错", e); } } obj.put(key, val); return obj.toJSONString(); } /** * 获取JSONP JSON * * @param jsonpStr jsonpStr * @return JSON */ public static String getJsonPJsonStr(String jsonpStr) { int startIndex = jsonpStr.indexOf("("); int endIndex = jsonpStr.lastIndexOf(")"); return jsonpStr.substring(startIndex + 1, endIndex); } /** * 获取JSONP (JSONObject) * * @param jsonpStr jsonpStr * @return JSON */ public static JSONObject getJsonPJsonObject(String jsonpStr) { String jsonPJsonStr = getJsonPJsonStr(jsonpStr); return JSON.parseObject(jsonPJsonStr); } /** * 获取JSONP (JSONArray) * * @param jsonpStr jsonpStr * @return JSON */ public static JSONArray getJsonPJsonArray(String jsonpStr) { String jsonPJsonStr = getJsonPJsonStr(jsonpStr); return JSON.parseArray(jsonPJsonStr); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy