如何使用jsonlite R包将长度为1的R向量编码为json中的单个值?

时间:2016-07-10 02:54:54

标签: json r jsonlite

我正在尝试使用jsonlite包和toJSON函数将R列表编码为json。我有一个简单的项目,如:

list(op='abc')

我希望成为:

{
  "op" : "abc"
}

相反,我得到:

{
  "op" : ["abc"]
}

我试图为这个json提供的API会对后者产生影响并需要前者。关于如何从jsonlite(或其他R json包)获取前一行为的任何建议?

1 个答案:

答案 0 :(得分:3)

auto_unbox参数与jsonlite包有关:

toJSON(list(op='abc'),auto_unbox=TRUE)

的产率:

{"op":"abc"}

更新:基于评论,这种方法可能更安全,并举例说明原因:

> jsonlite::toJSON(list(x=unbox(1),y=c(1,2)))
{"x":1,"y":[1,2]} 
> jsonlite::toJSON(list(x=unbox(1),y=unbox(c(1,2)))) # expect error here.
Error: Tried to unbox a vector of length 2