mysql应用
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.

64 lines
2.3 KiB

6 months ago
  1. package com.bfd.dataprocess.util;
  2. import java.util.Map;
  3. import com.alibaba.fastjson2.JSON;
  4. import com.alibaba.fastjson2.JSONObject;
  5. import com.alibaba.fastjson2.JSONPath;
  6. import com.bfd.dataprocess.config.Constant;
  7. import lombok.extern.slf4j.Slf4j;
  8. /**
  9. * @author:jinming
  10. * @className:DataUtil
  11. * @version:1.0
  12. * @description: 获取dataValue的值
  13. * @Date:2023/11/1 9:54
  14. */
  15. @Slf4j
  16. public class DataUtil {
  17. /**
  18. * @param key 传入的key
  19. * @param dataMap 数据map
  20. * @return 根据传入的参数进行判断解析返回正确的dataValue
  21. */
  22. public static Object getValue(String key, Map dataMap) {
  23. try {
  24. //公式为空直接就返回
  25. if (key.equals(Constant.EMPTY)) {
  26. return Constant.EMPTY;
  27. }
  28. if (!key.contains(Constant.NOT_KEY)) {
  29. return key;
  30. }
  31. Object dataValue;
  32. String isJson = "#json#";
  33. if (key.contains(isJson)) {
  34. //进行第一次拆分,获取#json#前面的部分
  35. String[] keySplit = key.split(isJson);
  36. String firstDataKey = keySplit[0];
  37. String[] firstDataKeySplit = firstDataKey.split(":");
  38. //取出前半部分对应的JSON数据并转换为JSONObject
  39. String dataJson = (String) dataMap.get(firstDataKeySplit[0]);
  40. JSONObject dataJsonObject = JSON.parseObject(dataJson);
  41. //根据key的后半部分取出对应JSONObject中的值
  42. String firstDataKeyJson = (String) JSONPath.eval(dataJsonObject, firstDataKeySplit[1]);
  43. String secDataKey = keySplit[1];
  44. JSONObject firstDataJsonObject = JSON.parseObject(firstDataKeyJson);
  45. dataValue = JSONPath.eval(firstDataJsonObject, secDataKey);
  46. return dataValue;
  47. }
  48. String[] keySplit = key.split(":");
  49. String jsonPath = keySplit[1];
  50. String dataJson = (String) dataMap.get(keySplit[0]);
  51. JSONObject dataJsonObject = JSON.parseObject(dataJson);
  52. dataValue = JSONPath.eval(dataJsonObject, jsonPath);
  53. return dataValue;
  54. } catch (Exception e) {
  55. // TODO: handle exception
  56. log.error("jsonpath公式取值异常,", e);
  57. return null;
  58. }
  59. }
  60. }