【问题标题】:How to keep the same format as original file when writing a JSON file编写 JSON 文件时如何保持与原始文件相同的格式
【发布时间】:2021-11-27 21:38:12
【问题描述】:

我试用了 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() 操作期间发生了一些事情,但不确定究竟是什么。

【问题讨论】:

  • 键可以在实现中重新排序,但你不应该丢失元素。
  • @dandavis,这是jsonlite 包在编写 JSON 文件时的问题吗? @r2evans 的答案似乎解决了我的问题,当我在 R 中读取两个文件时,它们是相同的。我希望到目前为止一切都好,因为我有数百个这样的文件,我不想要一些隐藏的问题:D
  • 这一切都有道理,我不会担心的。

标签: r json jsonlite


【解决方案1】:

在前面,添加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)

【讨论】:

    猜你喜欢
    • 2012-10-08
    • 2020-05-10
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    • 2021-03-13
    • 1970-01-01
    相关资源
    最近更新 更多