Open Refine多值JSON列转换问题:GREL表达式失效求助
解决方法
问题根源在于原始数据格式:第二条内容是两个独立JSON对象用逗号分隔,并非合法的JSON数组,直接用value.parseJson()无法正确解析为可遍历的集合。
正确的GREL表达式如下:
forEach("[" + value + "]".parseJson(), x, x.result).join(" | ")
表达式拆解:
"[" + value + "]":给原始值前后添加方括号,将单个JSON对象或逗号分隔的多个对象转换为合法的JSON数组格式。例如把{"result":"Banana"},{"result":"Apple"}转为[{"result":"Banana"},{"result":"Apple"}]。.parseJson():将处理后的字符串解析为JSON数组。forEach(..., x, x.result):遍历数组中的每个JSON对象,提取result字段的值。.join(" | "):将提取到的所有值用|连接起来。
该表达式可同时处理单对象和多对象的情况,生成你需要的结果。
内容的提问来源于stack exchange,提问作者Vijay Barve
相关产品推荐
相关产品推荐

