如何在写入 JSON 文件时保持与原始文件相同的格式
How to keep the same format as original file when writing a JSON file
我尝试了 R 包的功能 jsonlite
,但不确定为什么写入功能会稍微修改文件的结构。
下面是一个具有给定特定结构的文件的简单示例。我读了它,然后将它写回磁盘,但有些小改动,我无法用最初创建它的第 3 方应用程序打开它。
library(jsonlite)
json_lst <- fromJSON(txt = "https://raw.githubusercontent.com/valentinitnelav/test/master/test.json")
write_json(json_lst, "./test/test_2.json")
你能帮我了解到底发生了什么变化并解决这个问题吗?
我用 Mozzila 浏览器打开了这两个文件,可能是某些列表以某种方式丢失了一些元素(可能“未列出”,但不是全部)。也许在 toJSON()
操作期间发生了一些事情,但不确定具体是什么。
在前面添加 auto_unbox = TRUE
。
jsonlite
的默认行为是严格“装箱”长度为 1 的向量。
toJSON(list(a=1))
# {"a":[1]}
toJSON(list(a=1), auto_unbox=TRUE)
# {"a":1}
因此对于您的代码,请使用
write_json(json_lst, "./test/test_2.json", auto_unbox = TRUE)
我尝试了 R 包的功能 jsonlite
,但不确定为什么写入功能会稍微修改文件的结构。
下面是一个具有给定特定结构的文件的简单示例。我读了它,然后将它写回磁盘,但有些小改动,我无法用最初创建它的第 3 方应用程序打开它。
library(jsonlite)
json_lst <- fromJSON(txt = "https://raw.githubusercontent.com/valentinitnelav/test/master/test.json")
write_json(json_lst, "./test/test_2.json")
你能帮我了解到底发生了什么变化并解决这个问题吗?
我用 Mozzila 浏览器打开了这两个文件,可能是某些列表以某种方式丢失了一些元素(可能“未列出”,但不是全部)。也许在 toJSON()
操作期间发生了一些事情,但不确定具体是什么。
在前面添加 auto_unbox = TRUE
。
jsonlite
的默认行为是严格“装箱”长度为 1 的向量。
toJSON(list(a=1))
# {"a":[1]}
toJSON(list(a=1), auto_unbox=TRUE)
# {"a":1}
因此对于您的代码,请使用
write_json(json_lst, "./test/test_2.json", auto_unbox = TRUE)