|
@@ -0,0 +1,42 @@
|
|
|
|
+package com.winhc.bigdata.udf;
|
|
|
|
+
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
|
+import com.alibaba.fastjson.JSONPath;
|
|
|
|
+import com.aliyun.odps.udf.UDF;
|
|
|
|
+import com.aliyun.odps.utils.StringUtils;
|
|
|
|
+
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
+import java.util.List;
|
|
|
|
+import java.util.Map;
|
|
|
|
+import java.util.Set;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * @author: π
|
|
|
|
+ * 2021/8/30 16:57
|
|
|
|
+ */
|
|
|
|
+public class json_list extends UDF {
|
|
|
|
+ public List<String> evaluate(String json, String key, String value) {
|
|
|
|
+ if (StringUtils.isBlank(json)) return null;
|
|
|
|
+ List<Map> list1 = JSON.parseArray(json, Map.class);
|
|
|
|
+ Set<String> set = list1.stream().map(x -> {
|
|
|
|
+ String key1 = (String) x.getOrDefault(key, "");
|
|
|
|
+ String value1 = (String) x.getOrDefault(value, "");
|
|
|
|
+ if (StringUtils.isNotBlank(value1) && StringUtils.isNotBlank(key1)) {
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+ return key1;
|
|
|
|
+ }).filter(StringUtils::isNotBlank).collect(Collectors.toSet());
|
|
|
|
+ System.out.println(set);
|
|
|
|
+ if(set.isEmpty()) return null;
|
|
|
|
+ return new ArrayList<>(set);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public static void main(String[] args) {
|
|
|
|
+ json_list j = new json_list();
|
|
|
|
+ List<String> evaluate = j.evaluate("[{\"show\":\"辽阳文圣仪表厂\",\"value\":\"\"}]", "show","value");
|
|
|
|
+ System.out.println(evaluate);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+}
|