首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用RJSONIO和AsIs类

使用RJSONIO和AsIs类
EN

Stack Overflow用户
提问于 2012-07-11 06:31:31
回答 1查看 355关注 0票数 3

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

代码语言:javascript
复制
x = "HELLO"
toJSON(list(x = I(x)), collapse="")

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

但是假设我们有一份清单

代码语言:javascript
复制
y = list(a = "HELLO", b = "WORLD")
toJSON(list(y = I(y)), collapse="")

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

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

代码语言:javascript
复制
"{ \"y\": [{\n \"a\": \"HELLO\",\n\"b\": \"WORLD\" \n}] }"

注意方括号。另外,我想去掉所有的“\n”,但是折叠并不能消除嵌套JSON中的换行。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-11 07:44:39

试着写成

代码语言:javascript
复制
y = list(list(a = "HELLO", b = "WORLD"))
test<-toJSON(list(y = I(y)), collapse="")

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

代码语言:javascript
复制
{ "y": [
 {
 "a": "HELLO",
"b": "WORLD" 
} 
] }

我猜您可以将\n删除为

代码语言:javascript
复制
test<-gsub("\n","",test)

或者使用RJSON包

代码语言:javascript
复制
> rjson::toJSON(list(y = I(y)))
[1] "{\"y\":[{\"a\":\"HELLO\",\"b\":\"WORLD\"}]}"

原因

代码语言:javascript
复制
> names(list(a = "HELLO", b = "WORLD"))
[1] "a" "b"
> names(list(list(a = "HELLO", b = "WORLD")))
NULL

检查rjson::toJSON,您将发现以下代码片段

代码语言:javascript
复制
  if (!is.null(names(x))) 
            return(toJSON(as.list(x)))
        str = "["

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11422993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档