You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中创建含嵌套列表的JSON文件并解决fromJson解析错误

如何创建可被R正确解析的嵌套结构JSON文件

问题背景

尝试创建一个JSON文件,要求第三个元素为包含子列表的嵌套列表结构,但使用R的fromJson(txt = 'example_json.json')读取时出现解析错误,提示数组元素格式不符合要求。

错误的JSON代码

{
  "list1": [
      "element1"
    ],
    
  "list2": [
      "element2"
    ],
    
  "List_with_lists_as_elements": [
    "Child1":{
      "Name": "Child1",
      
      "Child1_Title": [
        "Title1",
        "Title2",
        "Title3"]
        
        ,
      "Child1_Subtitle": [
        "Subtitle_1",
        "Subtitle_2",
        "Subtitle_3"
      ]
    },
    "Child2":{
      "Name": "Child2",
      
      "Child2_Title": [
        "Title1",
        "Title2",
        "Title3"]
        
        ,
      "Child2_Subtitle": [
        "Subtitle2_1",
        "Subtitle2_2",
        "Subtitle2_3"
      ]
    },
    
    "Child3":{
      "Name": "Child3",
      
      "Child2_Title": [
        "Title1",
        "Title2",
        "Title3"]
        
        ,
      "Child2_Subtitle": [
        "Subtitle3_1",
        "Subtitle3_2",
        "Subtitle3_3"
      ]
    }
  ]
}

报错信息

Error in parse_con(txt, bigint_as_char) : 
  parse error: after array element, I expect ',' or ']'
          _as_elements": [     "Child1":{       "Name": "Child1",     
                     (right here) ------^

问题原因与修正方案

核心错误

JSON语法中,数组(用[]包裹)的元素只能是值类型(比如字符串、数字、对象、数组等),不能直接使用键值对("Child1": {...})。你错误地在数组内部使用了对象的键值对结构,导致解析失败。

修正方案1:将外层改为对象(保留Child标识)

如果需要保留Child1/Child2这类命名标识,把List_with_lists_as_elements的外层从数组[]改为对象{},这样每个Child就是对象的键值对,符合JSON语法:

{
  "list1": [
    "element1"
  ],
  "list2": [
    "element2"
  ],
  "List_with_lists_as_elements": {
    "Child1": {
      "Name": "Child1",
      "Child1_Title": [
        "Title1",
        "Title2",
        "Title3"
      ],
      "Child1_Subtitle": [
        "Subtitle_1",
        "Subtitle_2",
        "Subtitle_3"
      ]
    },
    "Child2": {
      "Name": "Child2",
      "Child2_Title": [
        "Title1",
        "Title2",
        "Title3"
      ],
      "Child2_Subtitle": [
        "Subtitle2_1",
        "Subtitle2_2",
        "Subtitle2_3"
      ]
    },
    "Child3": {
      "Name": "Child3",
      "Child2_Title": [
        "Title1",
        "Title2",
        "Title3"
      ],
      "Child2_Subtitle": [
        "Subtitle3_1",
        "Subtitle3_2",
        "Subtitle3_3"
      ]
    }
  }
}

修正方案2:使用数组结构(无外部Child键)

如果确实需要数组形式的嵌套列表,将每个子项作为独立对象放入数组,把Child1这类名称作为对象内部的属性:

{
  "list1": [
    "element1"
  ],
  "list2": [
    "element2"
  ],
  "List_with_lists_as_elements": [
    {
      "Name": "Child1",
      "Titles": [
        "Title1",
        "Title2",
        "Title3"
      ],
      "Subtitles": [
        "Subtitle_1",
        "Subtitle_2",
        "Subtitle_3"
      ]
    },
    {
      "Name": "Child2",
      "Titles": [
        "Title1",
        "Title2",
        "Title3"
      ],
      "Subtitles": [
        "Subtitle2_1",
        "Subtitle2_2",
        "Subtitle2_3"
      ]
    },
    {
      "Name": "Child3",
      "Titles": [
        "Title1",
        "Title2",
        "Title3"
      ],
      "Subtitles": [
        "Subtitle3_1",
        "Subtitle3_2",
        "Subtitle3_3"
      ]
    }
  ]
}

验证解析

将修正后的JSON保存为文件,用R执行以下代码即可正常解析:

library(jsonlite)
result <- fromJson("example_json.json")
str(result) # 查看嵌套结构

内容的提问来源于stack exchange,提问作者Laura

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 14:35:21