之前都是手动拼字符串写的,优点是灵活,缺点也很明显,容易出错。
下面提供一种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(); } }
使用示例:
格式化校验下:
