json对象里面可能有100个k-v,移除50个,保留50个
最近优化存储有用到,对于已经get_json_object解析到的就从原始的字段里踢出去,避免重复存储。
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import org.apache.hadoop.hive.ql.exec.UDF;
public class JsonObjectRemove extends UDF {
public String evaluate(String input,String ...params) throws Exception {
JsonObject jsonObject = new JsonParser().parse(input).getAsJsonObject();
if (params == null || params.length == 0) {
throw new IllegalArgumentException("参数不能为空");
}
for (int i = 0; i < params.length; i++) {
jsonObject.remove(params[i]);
}
String jsonObject1 = new Gson().toJson(jsonObject);
return jsonObject1;
}
}