我正在尝试在R中使用jsonlite创建对象的JSON数组。目标是这样的JSON:
{
"top":[
{
"master1": {
"item1": "value1"
}
},
{
"master2": {
"item2": "value2"
}
}
]
}
我尝试了带有列表列的列表列表和数据框,但是无法获得所需的输出。除此之外,将上述内容与fromJSON / toJSON转换为其他格式:
library(jsonlite)
txt <- '{
"top":[
{
"master1": {
"item1": "value1"
}
},
{
"master2": {
"item2": "value2"
}
}]
}'
toJSON(fromJSON(txt), pretty = T)
# Output
{
"top": [
{
"master1": {
"item1": "value1"
},
"master2": {}
},
{
"master1": {},
"master2": {
"item2": "value2"
}
}
]
}
我需要为此设置一个参数吗?
默认情况下,fromJSON
调用将您的输入转换为数据帧,并因此添加NA
值,从而导致输出JSON中的条目为空:
$top
item1 item2
1 value1 <NA>
2 <NA> value2
您需要将simplifyDataFrame = FALSE
添加到fromJSON
调用中,以防止其创建数据帧。
toJSON(fromJSON(txt, simplifyDataFrame = FALSE), pretty = T)
给予
{
"top": [
{
"master1": {
"item1": ["value1"]
}
},
{
"master2": {
"item2": ["value2"]
}
}
]
}