【问题标题】:JSON to CSV (getting only first row from the JSON file)JSON 到 CSV(仅从 JSON 文件中获取第一行)
【发布时间】:2021-05-05 18:35:09
【问题描述】:

我有一个 JSON 文件。我想将此 JSON 文件转换为 CSV。我浏览了 Stack Overflow 和 R Studio 社区中的几篇文章。看完之后,我写了一段代码。

我的代码仅适用于第一行。这意味着,我只从 JSON 文件中获得第一行。但是,我的 JSON 文件包含 1024 行。我通过在线网站查看文件,收到1024行。

Compound <- fromJSON(file = "~/Compound.json")
df <- data.frame(t(sapply(Compound,c)))

你能告诉我,为什么我只得到 1 行或者我该如何解决这些问题?

【问题讨论】:

  • 请分享示例数据,以便我们重现您的错误。
  • 如果您的文件每行/行有一个完整的 JSON 对象,那么从技术上讲,它是“ndjson”(以换行符分隔的 json),由 jsonlite::stream_in 正确解析。
  • @r2evans 谢谢。也许这就是问题所在。你能告诉我如何解决这个问题吗?
  • 我做到了。 如果您的数据确实是 ndjson,请将您对 fromJSON 的调用替换为 stream_in。如果您的数据不是 ndjson,那么它将无法正常工作。不过,我真的不知道,因为我不知道文件中有什么。
  • @r2evans 谢谢。成功了!

标签: r json csv rjson


【解决方案1】:

我使用jsonlite lite 包解决了这个问题。因为,我的 JASON 是"ndjson" (newline-delimited json)。从r2evans的帖子评论中获得帮助

install.packages("jsonlite")
library(jsonlite)

json <- stream_in(file("~/Food.json"), simplifyDataFrame=FALSE)
df <- data.frame(t(sapply(json,c)))

【讨论】:

    猜你喜欢
    • 2022-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-28
    • 1970-01-01
    • 2016-11-01
    • 1970-01-01
    相关资源
    最近更新 更多