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

如何在R中解析多层嵌套JSON文件并转换为结构化数据框

嵌套JSON转矩形数据框解决方案

你之前的方案出问题的原因是unlist会直接打散所有嵌套层级的对应关系,无法绑定城市记录对应的用户和日期信息,因此建议用tidyverse生态下的purrr包做分层遍历,代码如下:

library(jsonlite)
library(tidyverse)

# 读入原始JSON文件
jdata <- read_json("./raw.json")

# 分层遍历提取字段,自动合并为数据框
result_df <- jdata$user_id %>% 
  # 第一层遍历:提取所有用户ID
  imap_dfr(~{
    user_id <- .y
    # 第二层遍历:提取对应用户的所有日期记录
    .x$date %>% imap_dfr(~{
      record_date <- .y
      # 提取城市字段,兼容大小写键名,无有效城市则返回NA
      city <- tryCatch({
        tolower(names(.x)) %in% "city" %>% which() %>% {.x[[.]]}
      }, error = function(e) NA_character_)
      # 跳过无城市的无效记录
      if(!is.na(city)){
        tibble(user_id = user_id, date = record_date, city = city)
      } else {
        NULL
      }
    })
  })

# 查看输出结果
head(result_df)

上述代码输出的是三列标准矩形数据框,包含user_id、date、city三个字段,可直接用于后续分析。如果需要处理日期格式,可额外调用lubridate::ymd()处理date列,带时分秒的日期条目也可自动识别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:15:03