R列表/数据帧到JSON对象数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R列表/数据帧到JSON对象数组相关的知识,希望对你有一定的参考价值。

我正在尝试在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"]
      }
    }
  ]
}

以上是关于R列表/数据帧到JSON对象数组的主要内容,如果未能解决你的问题,请参考以下文章

R 数据帧到 Oracle SQL 表:无法分配内存

错误代码:错误域 = NSCocoaErrorDomain 代码 = 3840“JSON 文本没有以数组或对象和允许未设置片段的选项开头。”

Alamofire 文件上传出现错误“JSON 文本未以数组或对象开头,并且允许未设置片段的选项”

如何将本地存储中的 JSON 对象添加到 Android Studio 上的片段列表

从长数据帧到宽数组的快速转换

java中把json怎么转换成数组?