json - 使用 OpenRefine(或 R)解析大而复杂的 Json 文件的最佳方法

标签 json r openrefine

我知道如何在 Open 精炼中解析 json 单元格,但这对我来说太棘手了。

enter image description here

我使用 API 提取了 4730 个 AirBNB 房间的日历,由它们的 ID 标识。

这是一个 Json 文件的示例:https://fr.airbnb.com/api/v2/calendar_months?key=d306zoyjsyarp7ifhu67rjxn52tv0t20&currency=EUR&locale=fr&listing_id=4212133&month=11&year=2016&count=12&_format=with_conditions

对于从现在到 2017 年 11 月的每个 ID 和一年中的每一天,我想提取这些房间的可用性(真或假)及其当天的价格。

enter image description here

我不知道如何解析这些信息。我猜这意味着一系列嵌套的 forEach,但我找不到使用 Open Refine 执行此操作的正确方法。

我当然试过了

forEach(value.parseJson().calendar_months, e, e.days) 

结果是一系列的字典数组扰乱了我。

任何帮助将不胜感激。如果在 Open Refine 中操作太困难,使用 R(或 Python)的解决方案对我来说也不错。

最佳答案

而不是仅仅将您的项目创建为文本,并使用 GREL 来解析...

最好的方法是使用我们的可视化导入器向导为 JSON 文件和 XML 文件选择您想要使用的 JSON 记录部分(您甚至可以使用指向 JSON 文件的 URL,如您的示例中所示)。 (视频教程在这里展示了如何:https://www.youtube.com/watch?v=vUxdB-nl0Bw)

  • 选择包含要解析和使用的记录的 JSON 部分(这可以是任何重复部分,只需选择其中之一,OpenRefine 将提取所有其余部分)
    enter image description here
  • 限制要在创建过程中加载的数据行数,或保留所有行的默认值。
    enter image description here
  • 单击创建项目,现在您处于行模式。但是,如果您认为 Records 模式可能更适合上下文,只需将项目再次导入为 JSON,然后选择内容的下一个外部区域,可能是包含键字段等的更大数组。在示例中,键字段可能是日期,以及为什么我突出显示给定日期的整个记录​​。这样 OpenRefine 将为每条记录提供键,而记录模式让您可以比行模式更好地使用它们。

  • 随意拿这个例子,让它更好,对所有人更有帮助,将它添加到我们的 Wiki 部分 How to Use

    关于json - 使用 OpenRefine(或 R)解析大而复杂的 Json 文件的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40715596/

    相关文章:

    php - jQuery 基本 Typeahead 实现 - 当字符串匹配第一个或最后一个字符时不起作用

    r - 相对频率表怎么画

    excel - Openrefine:以可读的方式将数据从文本方面复制到 excel 中?

    java - 解析 JSON 数据时出现 ArrayIndexOutOfBoundsException 错误

    php - 如何使用 Sound Cloud API 通过标签搜索特定用户的轨道?

    r - 微阵列 Limma 包,在 topTable 函数中不为 probsets 列分配 ID

    r - R 的 Caret 包。保留了哪些 sample ?

    pivot - openrefine可以做汇总表吗?

    data-cleaning - openrefine 标志改变了行

    java - 使用 json 数据创建动态 TreeView - jsp 中的 dynatree