gpt4 book ai didi

json - 使用 RJSONIO 和 AsIs 类

转载 作者:行者123 更新时间:2023-12-02 02:14:06 25 4
gpt4 key购买 nike

我正在编写一些辅助函数来将我的 R 变量转换为 JSON。我遇到过这个问题:我希望我的值被表示为 JSON 数组,这可以根据 RJSONIO 文档使用 AsIs 类来完成。

x = "HELLO"
toJSON(list(x = I(x)), collapse="")

"{ \"x\": [ \"HELLO\" ] }"

但是假设我们有一个列表

y = list(a = "HELLO", b = "WORLD")
toJSON(list(y = I(y)), collapse="")

"{ \"y\": {\n \"a\": \"HELLO\",\n\"b\": \"WORLD\" \n} }"

在 y -> a 中找到的值未表示为数组。理想情况下我会

"{ \"y\": [{\n \"a\": \"HELLO\",\n\"b\": \"WORLD\" \n}] }"

注意方括号。我也想摆脱所有的“\n”,但崩溃并没有消除嵌套 JSON 中的换行符。有什么想法吗?

最佳答案

试着写成

y = list(list(a = "HELLO", b = "WORLD"))
test<-toJSON(list(y = I(y)), collapse="")

当您写入文件时,它显示为:

{ "y": [
{
"a": "HELLO",
"b": "WORLD"
}
] }

我想你可以删除\n as

test<-gsub("\n","",test)

或者使用 RJSON 包

> rjson::toJSON(list(y = I(y)))
[1] "{\"y\":[{\"a\":\"HELLO\",\"b\":\"WORLD\"}]}"

原因

> names(list(a = "HELLO", b = "WORLD"))
[1] "a" "b"
> names(list(list(a = "HELLO", b = "WORLD")))
NULL

检查 rjson::toJSON 你会发现这段代码

  if (!is.null(names(x))) 
return(toJSON(as.list(x)))
str = "["

因此它似乎需要一个未命名的列表来将其视为 JSON 数组。也许 RJSONIO 是相似的。

关于json - 使用 RJSONIO 和 AsIs 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11422993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com