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

R语言如何从JSON文件提取指定字段数据并存储为变量

R语言使用jsonlite提取嵌套JSON指定值方案

前置准备

  • 首先安装并加载jsonlite包:
# 未安装先执行安装
install.packages("jsonlite")
# 加载包
library(jsonlite)

步骤1:解析JSON数据

根据你的数据来源选择对应解析方式:

  • 读取本地JSON文件:
json_data <- fromJSON("你的JSON文件路径.json")
  • 解析示例JSON字符串:
json_str <- '{"error": false,"msg": "all countries and population 1961 - 2018","data": [{"country": "Arab World","code": "ARB","populationCounts": [{"year": 1960,"value": 92197753},{"year": 1961,"value": 94724510},{"year": 1962,"value": 97334442}]}]}'
json_data <- fromJSON(json_str)

步骤2:提取1962年人口数值

基础R写法(无额外依赖)

# 提取逻辑:取出populationCounts嵌套表→筛选year=1962的行→取value字段值
pop_1962 <- json_data$data$populationCounts[[1]][json_data$data$populationCounts[[1]]$year == 1962, "value"]

执行后变量pop_1962存储的就是目标值97334442。

易读性更高的dplyr写法(可选)

习惯tidyverse语法可以用dplyr过滤:

library(dplyr)
pop_df <- json_data$data$populationCounts[[1]]
pop_1962 <- pop_df %>% filter(year == 1962) %>% pull(value)

常见失败原因说明

之前直接用$选择器失败,大多是忽略了两层嵌套数组结构:

  1. 根节点下的data是数组,解析后为R的列表,需要先取对应国家的下标才能访问下级字段
  2. populationCounts同样是数组结构,解析后为列表列,需要用[[1]]取出内部数据框再做筛选

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 10:54:02