Dra*_*gon 5 json dictionary openrefine
我在Google Refine中有一些JSON - 完整版的http://mapit.mysociety.org/point/4326/0.1293497,51.5464828,但缩写为:
{1234: {'name': 'Barking', 'type': 'WMC'},
5678: {'name': 'England', 'type': 'EUR'} }
Run Code Online (Sandbox Code Playgroud)
我只想用(假定的唯一)类型提取对象的名称WMC.
在Google Refine中解析JSON没有帮助,这与数组有关,而不是说.
有什么建议我应该考虑解决这个问题吗?
编辑:我不知道初始密钥是什么:我相信它们是我无法提前预测的唯一标识符.
Refine 目前不知道如何迭代字典的键,其中键是未知的(尽管我即将实现该功能)。
在当前实现中实现此功能的技巧是将 JSON 对象转换为 JSON 数组。以下 GREL 表达式将执行此操作,将结果解析为 JSON,迭代数组的所有元素,并为您提供“WMC”类型的名字。
filter(('['+(value.replace(/"[0-9]+":/,""))[1,-1]+']').parseJson(),v,v['type']=='WMC')[0]['name']
Run Code Online (Sandbox Code Playgroud)
将该表达式与“基于此列添加列”命令结合使用来创建新的 WMC 名称列。如果有可能有多个这种类型的名称并且您想要全部,您可以添加一个 forEach 循环并沿着以下行加入
forEach(filter(('['+(value.replace(/"[0-9]+":/,""))[1,-1]+']').parseJson(),v,v['type']=='WMC'),x,x['name']).join('|')
Run Code Online (Sandbox Code Playgroud)
这将为您提供一个用管道分隔的名称列表,您可以使用“拆分多值单元格”将其拆分。
希望在下一个版本中会更容易!
| 归档时间: |
|
| 查看次数: |
869 次 |
| 最近记录: |