如何在写入 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)