【发布时间】:2021-12-05 14:22:33
【问题描述】:
我在编辑 JSON 文件并将结果保存为可用形式时遇到问题。
我的出发点是:modify-json-file-using-some-condition-and-create-new-json-file-in-r
事实上,我想做一些更简单的事情,但它仍然不起作用!我正在使用 jsonlite 包。
等效的示例如下所示...
$Apples
$Apples$Origin
$Apples$Origin$Id
[1] 2615
$Apples$Origin$season
[1] "Fall"
$Oranges
$Oranges$Origin
$Oranges$Origin$Id
[1] 2615
$Oranges$Origin$airportLabel
[1] "Orange airport"
$Oranges$Shipping
$Oranges$Shipping$ShipperId
[1] 123
$Oranges$Shipping$ShipperLabel
[1] "Brighter Orange"
我读取了文件,进行了一些更改并将生成的文件保存回 HDD。没有更简单的吧?
json_list = read_json(path = "../documents/dummy.json")
json_list$Apples$Origin$Id = 1234
json_list$Oranges$Origin$Id = 4567
json_list$Oranges$Shipping$ShipperLabel = "Suntan Blue"
json_modified <- toJSON(json_list, pretty = TRUE)
write_json(json_modified, path = "../documents/dummy_new.json")
json_list 在 Rstudio 文件类型列下显示为字符格式。
json_modified 在 Rstudio 文件类型列下显示为 json 格式。
为什么会有这种差异?
现在,如果我运行原始文件,它可以工作,但修改后的文件会失败。 JSON 格式检出,我看不到任何错误。
真实的文件比上面的例子大,但是我用的方法是一样的。
我编辑或保存文件的方式有问题吗?
我对 JSON 很陌生,这真的很令人沮丧!
有什么想法吗?
谢谢
【问题讨论】:
-
这接近但不太可重现。您能否提供以下一项或两项: (1) JSON 文件的原始内容; (2)
dput(json_list)和/或dput(json_modified)。谢谢! -
问题:您是否也附上了
RJSONIO包?如果是这样,对toJSON()的调用可能不明确:jsonlite::toJSON()或RJSONIO::toJSON()。也就是说,在调用jsonlite::write_json()之前,您不需要使用toJSON()。 -
dput(json_list) 给出:list(Apples = list(Origin = list(Id = 2615L, season = "Fall")), Oranges = list(Origin = list(Id = 2615L, airportLabel = "Orange airport"), Shipping = list(ShipperId = 123L, ShipperLabel = "Brighter Orange"))) dput(json_modified) ...没有 toJSON ...给出:list(Apples = list(Origin = list(Id = 1234 , season = "Fall")), Oranges = list(Origin = list(Id = 4567, airportLabel = "Orange airport"), Shipping = list(ShipperId = 123L, ShipperLabel = "Suntan"))) 如果我之前运行 toJSON dput() 我转义字符
-
RJSONIO 包未使用
-
@Greg 移除 toJSON() 解决了这个问题。非常感谢