如何使用 jsonlite R 包将长度为 1 的 R 向量编码为 json 中的单个值?
How can I encode an R vector of length 1 as a single value in json using the jsonlite R package?
我正在尝试使用 jsonlite 包和 toJSON 函数将 R 列表编码为 json。我有一个简单的项目,例如:
list(op='abc')
我希望它变成:
{
"op" : "abc"
}
相反,我得到:
{
"op" : ["abc"]
}
我试图将此 json 提供给 API 的 API 因后者而需要前者。关于如何从 jsonlite(或另一个 R json 包)获得以前的行为有什么建议吗?
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
我正在尝试使用 jsonlite 包和 toJSON 函数将 R 列表编码为 json。我有一个简单的项目,例如:
list(op='abc')
我希望它变成:
{
"op" : "abc"
}
相反,我得到:
{
"op" : ["abc"]
}
我试图将此 json 提供给 API 的 API 因后者而需要前者。关于如何从 jsonlite(或另一个 R json 包)获得以前的行为有什么建议吗?
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