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; } }