xufei 3 lat temu
rodzic
commit
d681f21879

Plik diff jest za duży
+ 56 - 0
src/main/java/com/winhc/bigdata/udf/contain_judge_v2.java


+ 42 - 0
src/main/java/com/winhc/bigdata/udf/json_list.java

@@ -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);
+    }
+
+}