将R列表转换为JSON

gkm*_*gic 6 json r mongodb

一个简单的问题 - 我想将一个列表转换为R中的JSON.让我们说这是我的列表:

listtest = list(
  list(section_id = NULL, name = 'name1', slug = 'slug1'),
  list(section_id = NULL, name = 'name2', slug = 'slug2'),
  list(section_id = NULL, name = 'name3', slug = 'slug3', categories = 
         list(
           list(section_id = NULL, name = 'name31', slug = 'slug31'),
           list(section_id = NULL, name = 'name32', slug = 'slug32')
         )
  )
)
Run Code Online (Sandbox Code Playgroud)

所以我用一个简单的

jsontest = toJSON(listtest, pretty = TRUE, auto_unbox = TRUE)
Run Code Online (Sandbox Code Playgroud)

然后我得到一个像这样的JSON:

[
  {
    "section_id": {},
    "name": "name1",
    "slug": "slug1"
  },
  {
    "section_id": {},
    "name": "name2",
    "slug": "slug2"
  },
  {
    "section_id": {},
    "name": "name3",
    "slug": "slug3",
    "categories": [
      {
        "section_id": {},
        "name": "name31",
        "slug": "slug31"
      },
      {
        "section_id": {},
        "name": "name32",
        "slug": "slug32"
      }
    ]
  }
] 
Run Code Online (Sandbox Code Playgroud)

但是,在代码的开头和结尾,我得到'['和']'.我怎么能摆脱这个?上传到mongoDB时它会给我一个错误,而没有括号它可以正常工作.

Mbr*_*Mbr 4

使用gsub()

jsontest <- gsub(pattern = '^\[', replacement = "", x = jsontest)
jsontest <- gsub(pattern = '\]$', replacement = "", x = jsontest)
Run Code Online (Sandbox Code Playgroud)

结果 :

  {
    "section_id": {},
    "name": "name1",
    "slug": "slug1"
  },
  {
    "section_id": {},
    "name": "name2",
    "slug": "slug2"
  },
  {
    "section_id": {},
    "name": "name3",
    "slug": "slug3",
    "categories": [
      {
        "section_id": {},
        "name": "name31",
        "slug": "slug31"
      },
      {
        "section_id": {},
        "name": "name32",
        "slug": "slug32"
      }
    ]
  }
Run Code Online (Sandbox Code Playgroud)

仍然json上课:

> class(jsontest)
[1] "json"
Run Code Online (Sandbox Code Playgroud)

但也许空白可能会引起一些麻烦。