比长篇文章更好,让我们从一个例子开始:
library(rjson)
toJSON(list(names = c("paul")))
# [1] "{\"names\":\"paul\"}"
toJSON(list(names = c("paul", "henri")))
# [1] "{\"names\":[\"paul\",\"henri\"]}"
在第一个示例中,names是一个字符串,而在第二个示例中,names是一个数组。我想在这种特殊情况下强制R总是渲染一个数组。
注意:我也尝试过RJSONIO库,但这会对所有内容进行编码。例如,我仍然希望国家成为一个字符串。
library(RJSONIO)
toJSON(list(county="France", names = c("paul")), asIs = T)
# [1] "{\n \"county\": [ \"France\" ],\n\"names\": [ \"paul\" ] \n}"
有没有办法做到这一点?
答案 0 :(得分:2)
在非常类似的包RJSONIO中,您可以使用asIs
参数将单个数字表示为向量(因为它总是发生在R中):
library(RJSONIO)
toJSON(list(names = c("paul")),asIs=TRUE)
# result:
# [1] "{\n \"names\": [ \"paul\" ] \n}"
否则,如果你想坚持rjson
包,你可以利用列表总是转换为向量的事实(即使它们只包含一个值):
(请注意,这也适用于RJSON
包含asIs = FALSE
,因为正如我所说,它们非常相似)
library(rjson)
toJSON(list(country="France", names = list("paul")))
# or: toJSON(list(country="France", names = as.list(c("paul"))))
# result:
[1] "{\"country\":\"France\",\"names\":[\"paul\"]}"