假设我有以下 JSON 数据:
{ "_id" : { "$oid" : "string" }, "titulo" : "string", "id_cv" : 1132, "textos" : [ { "fecha" : { "$date" : 1217376000000 }, "estado" : "string", "texto" : "string", "source_url" : "string" } ] }
{ "_id" : { "$oid" : "string" }, "titulo" : "string", "autores" : ",\"string\",\"string\",\"string\",\"string",5", "id_cv" : 1138, "textos" : [ { "fecha" : { "$date" : 1217548800000 }, "estado" : "string", "texto" : "string", "source_url" : "string" } ] }
我正在尝试将 JSON 数据导入 R 并将其转换为最终的 R 数据框。
假设我在 R 中有以下脚本:
library("rjson")
json_file <- "/Users/usr/file/json_data.json"
json_data <- fromJSON(paste(readLines(json_file), collapse=""))
data = unlist(json_data)
title=data[names(data)=="titulo"]
print(title)
text=data[names(data)=="textos.texto"]
print(text)
url=data[names(data)=="textos.source_url"]
print(url)
当我运行这个脚本时,JSON 数据只产生一个包含 JSON 数据文件第一行的数据框。我有大约 200 行。我知道的问题之一是 JavaScript 不“允许”多行字符串。我试图以各种方式解决这个问题:
- 在每“行”数据之间添加“””。
- 将 '"' 添加到每个“行”数据的末尾。
- 在每个“行”数据之间添加“\”。
- 在每“行”数据的末尾添加“\”。
- 将所有多行转换为一行(将“\n”替换为“\n”)
以上所有都已尝试使用正则表达式。
我的问题是:如何操作 JSON 数据,以便将数据的所有“行”读入 R,以便我可以取消列出它们并构造相应的数据框,其列等于“标题”、“文本” ,'url' 和行等于 JSON 数据中的 'lines'?
我已经尝试使用 R 中的 RJSON 和 RJSONIO 库进行此操作,但我对目前使用哪个库感到矛盾,因为我认为最终问题在于 JSON 数据本身的格式