|
@@ -0,0 +1,70 @@
|
|
|
|
+package com.winhc.bigdata.udf;
|
|
|
|
+
|
|
|
|
+import com.aliyun.odps.udf.UDF;
|
|
|
|
+import com.aliyun.odps.utils.StringUtils;
|
|
|
|
+import com.google.gson.Gson;
|
|
|
|
+import com.google.gson.reflect.TypeToken;
|
|
|
|
+
|
|
|
|
+import java.util.Arrays;
|
|
|
|
+import java.util.List;
|
|
|
|
+import java.util.Map;
|
|
|
|
+import java.util.regex.Pattern;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
+
|
|
|
|
+import static apsara.odps.TypesProtos.Type.Map;
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * @Author: π
|
|
|
|
+ * @Description: 分割json
|
|
|
|
+ */
|
|
|
|
+public class split_json extends UDF {
|
|
|
|
+
|
|
|
|
+ public String evaluate(String unionJson, String keys) {
|
|
|
|
+ Gson gson = new Gson();
|
|
|
|
+ List<Litigant> litigants = gson.fromJson(unionJson, new TypeToken<List<Litigant>>() {
|
|
|
|
+ }.getType());
|
|
|
|
+ Map<String, String> map = litigants.stream().collect(Collectors.toMap(Litigant::getName, Litigant::getLitigant_id, (k1, k2) -> k2));
|
|
|
|
+ List<Litigant> list2 = Arrays.asList(keys.split(",")).stream()
|
|
|
|
+ .collect(Collectors.toMap(x -> x, x -> map.getOrDefault(x,""), (k1, k2) -> k2))
|
|
|
|
+ .entrySet().stream()
|
|
|
|
+ .map(e -> new Litigant(e.getKey(), e.getValue())).collect(Collectors.toList());
|
|
|
|
+ return gson.toJson(list2);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public static void main(String[] args) {
|
|
|
|
+ String unionJson = "[{\"name\":\"招商银行股份有限公司\",\"litigant_id\":\"\"},{\"name\":\"粤民初号招商银行股份有限公司信用卡中心\",\"litigant_id\":\"\"},{\"name\":\"黄丽芹\",\"litigant_id\":\"\"}]";
|
|
|
|
+ String keys = "黄丽芹1,招商银行股份有限公司,粤民初号招商银行股份有限公司信用卡中心";
|
|
|
|
+ //String keys = null;
|
|
|
|
+ split_json n = new split_json();
|
|
|
|
+ System.out.println(n.evaluate(unionJson, keys));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public class Litigant {
|
|
|
|
+ public Litigant(String name, String litigant_id) {
|
|
|
|
+ this.name = name;
|
|
|
|
+ this.litigant_id = litigant_id;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private String name;
|
|
|
|
+
|
|
|
|
+ private String litigant_id;
|
|
|
|
+
|
|
|
|
+ public String getName() {
|
|
|
|
+ return name;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void setName(String name) {
|
|
|
|
+ this.name = name;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public String getLitigant_id() {
|
|
|
|
+ return litigant_id;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void setLitigant_id(String litigant_id) {
|
|
|
|
+ this.litigant_id = litigant_id;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|