hive-udf正常数据转化为json形式(二)
之前都是手动拼字符串写的,优点是灵活,缺点也很明显,容易出错。
下面提供一种udf的形式:
package udf;
import com.aliyun.odps.udf.UDF;
public class TableBulidJson extends UDF {
public String evaluate(String ... params) {
if (params == null || params.length == 0 || params.length % 2 > 0) {
throw new IllegalArgumentException("参数不能为空,且必须成对入参");
}
StringBuilder sb = new StringBuilder("{");
String quote = "\"";
String colon = ":";
int size = params.length;
for (int i = 0; i < size; i=i+2) {
if (i>0){
sb.append(",");
}
sb.append(quote).append(params[i]).append(quote).append(colon);
String val = params[i + 1];
if (val == null){
sb.append("null");
} else {
sb.append(quote).append(val.replaceAll("\"","\\\\\"")).append(quote);
}
}
sb.append("}");
return sb.toString();
}
}
使用示例:

格式化校验下:

浙公网安备 33010602011771号