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();

    }
}

使用示例:

格式化校验下:

posted @ 2020-10-08 19:34  活不明白  阅读(73)  评论(0)    收藏  举报