智普大模型应用
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.

47 lines
1.8 KiB

  1. package com.bfd.qanda.utils;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.alibaba.fastjson.JSONPath;
  5. import java.util.Map;
  6. /**
  7. * @author:jinming
  8. * @className:DataUtil
  9. * @version:1.0
  10. * @description: 获取dataValue的值
  11. * @Date:2023/11/1 9:54
  12. */
  13. public class DataUtil {
  14. /**
  15. *
  16. * @param key 传入的key
  17. * @param dataMap 数据map
  18. * @return 根据传入的参数进行判断解析返回正确的dataValue
  19. */
  20. public static Object getValue(String key, Map dataMap) {
  21. Object dataValue;
  22. String isJson = "#json#";
  23. if (key.contains(isJson)) {
  24. //进行第一次拆分,获取#json#前面的部分
  25. String[] keySplit = key.split(isJson);
  26. String firstDataKey = keySplit[0];
  27. String[] firstDataKeySplit = firstDataKey.split(":");
  28. //取出前半部分对应的JSON数据并转换为JSONObject
  29. String dataJson = (String) dataMap.get(firstDataKeySplit[0]);
  30. JSONObject dataJsonObject = JSON.parseObject(dataJson);
  31. //根据key的后半部分取出对应JSONObject中的值
  32. String firstDataKeyJson = (String) JSONPath.eval(dataJsonObject, firstDataKeySplit[1]);
  33. String secDataKey = keySplit[1];
  34. JSONObject firstDataJsonObject = JSON.parseObject(firstDataKeyJson);
  35. dataValue = JSONPath.eval(firstDataJsonObject, secDataKey);
  36. return dataValue;
  37. }
  38. String[] keySplit = key.split(":");
  39. String jsonPath = keySplit[1];
  40. String dataJson = (String) dataMap.get(keySplit[0]);
  41. JSONObject dataJsonObject = JSON.parseObject(dataJson);
  42. dataValue = JSONPath.eval(dataJsonObject, jsonPath);
  43. return dataValue;
  44. }
  45. }