Browse Source

合并json

xufei 3 years ago
parent
commit
b749bbfc09
1 changed files with 48 additions and 0 deletions
  1. 48 0
      src/main/java/com/winhc/bigdata/udf/merge_json.java

+ 48 - 0
src/main/java/com/winhc/bigdata/udf/merge_json.java

@@ -0,0 +1,48 @@
+package com.winhc.bigdata.udf;
+
+import com.alibaba.fastjson.JSON;
+import com.aliyun.odps.udf.UDF;
+import com.aliyun.odps.utils.StringUtils;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author: π
+ * 2021/8/17 16:57
+ */
+public class merge_json extends UDF {
+    public String evaluate(String yg_name, String bg_name, String all_name) {
+        HashMap<String, Map<String, String>> m = new HashMap<>();
+        parse(yg_name, m);
+        parse(bg_name, m);
+        parse(all_name, m);
+        //System.out.println(m);
+        return JSON.toJSONString(m.values());
+    }
+
+    public void parse(String name, HashMap<String, Map<String, String>> m) {
+        if (StringUtils.isBlank(name)) return ;
+        List<Map> list = JSON.parseArray(name, Map.class);
+        for (Map s : list) {
+            String name1 = (String) s.getOrDefault("name", "");
+            String litigant_id1 = (String) s.getOrDefault("litigant_id", "");
+            if (StringUtils.isNotBlank(name1) && (StringUtils.isNotBlank(litigant_id1) || !m.containsKey(name1))) {
+                HashMap<String, String> m1 = new HashMap<>();
+                m1.put("name", name1);
+                m1.put("litigant_id", litigant_id1);
+                m.put(name1, m1);
+            }
+        }
+    }
+
+    public static void main(String[] args) {
+        String n1 = "[{\"name\":\"n11\",\"litigant_id\":\"p11\",\"date\":\"2020-11-02 00:00:00\",\"exec_money\":\"111.1\"},{\"name\":\"n21\",\"litigant_id\":\"p22\",\"date\":\"2020-12-02 00:00:00\",\"exec_money\":\"188.1\"}]";
+        String n2 = "[{\"name\":\"n11\",\"litigant_id\":\"p22\",\"date\":\"2020-11-03 00:00:00\",\"exec_money\":\"111.1\"},{\"name\":\"n22\",\"litigant_id\":\"p22\",\"date\":\"2020-12-02 00:00:00\",\"exec_money\":\"188.1\"}]";
+        String n3 = null;
+        merge_json m = new merge_json();
+        System.out.println(m.evaluate(n1, n2, n3));
+    }
+
+}