You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.8 KiB
48 lines
1.8 KiB
package com.bfd.qanda.utils;
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONPath;
|
|
|
|
import java.util.Map;
|
|
|
|
/**
|
|
* @author:jinming
|
|
* @className:DataUtil
|
|
* @version:1.0
|
|
* @description: 获取dataValue的值
|
|
* @Date:2023/11/1 9:54
|
|
*/
|
|
public class DataUtil {
|
|
/**
|
|
*
|
|
* @param key 传入的key
|
|
* @param dataMap 数据map
|
|
* @return 根据传入的参数进行判断解析,返回正确的dataValue
|
|
*/
|
|
public static Object getValue(String key, Map dataMap) {
|
|
Object dataValue;
|
|
String isJson = "#json#";
|
|
if (key.contains(isJson)) {
|
|
//进行第一次拆分,获取#json#前面的部分
|
|
String[] keySplit = key.split(isJson);
|
|
String firstDataKey = keySplit[0];
|
|
String[] firstDataKeySplit = firstDataKey.split(":");
|
|
//取出前半部分对应的JSON数据并转换为JSONObject
|
|
String dataJson = (String) dataMap.get(firstDataKeySplit[0]);
|
|
JSONObject dataJsonObject = JSON.parseObject(dataJson);
|
|
//根据key的后半部分取出对应JSONObject中的值
|
|
String firstDataKeyJson = (String) JSONPath.eval(dataJsonObject, firstDataKeySplit[1]);
|
|
String secDataKey = keySplit[1];
|
|
JSONObject firstDataJsonObject = JSON.parseObject(firstDataKeyJson);
|
|
dataValue = JSONPath.eval(firstDataJsonObject, secDataKey);
|
|
return dataValue;
|
|
}
|
|
String[] keySplit = key.split(":");
|
|
String jsonPath = keySplit[1];
|
|
String dataJson = (String) dataMap.get(keySplit[0]);
|
|
JSONObject dataJsonObject = JSON.parseObject(dataJson);
|
|
dataValue = JSONPath.eval(dataJsonObject, jsonPath);
|
|
return dataValue;
|
|
}
|
|
}
|