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

如何用jsonlite或正则获取JSON中period为0m的strongBuy值?

嗨,这个问题我碰到过!核心原因是你把整个JSON结构unlist之后,同名的strongBuy键会被自动添加后缀(比如.1、.2),但你直接用原始键名查找就会找不到对应的值,返回NA。下面给你几个靠谱的解决办法:

方法一:直接操作嵌套结构(最推荐)

别着急unlist,fromJSON解析后的结果本身就是嵌套的数据结构,我们可以直接筛选出period为0m的条目,再提取strongBuy的值:

library(jsonlite)
library(dplyr)

i <- "MSFT"
json_object <- getURL(json_url)
quote_summary <- fromJSON(json_object)

# 定位到recommendationTrend的trend数据框,筛选period为0m的行,提取strongBuy
strongBuy_0m <- quote_summary$quoteSummary$result[[1]]$recommendationTrend$trend %>%
  filter(period == "0m") %>%
  pull(strongBuy) %>%
  as.numeric()

print(strongBuy_0m)

这里trend是一个标准的数据框,用dplyr的filter和pull就能精准拿到你要的值,完全不会受其他period条目的干扰。

方法二:如果一定要用unlist后的结构

如果你因为某些原因必须保留unlist的步骤,可以先找到period为0m的条目在数组中的位置,再对应提取strongBuy的键:

library(jsonlite)

i <- "MSFT"
json_object <- getURL(json_url)
quote_summary <- fromJSON(json_object)
quote_summary_unlist <- unlist(quote_summary)

# 先找到period为0m的条目索引
trend_df <- quote_summary$quoteSummary$result[[1]]$recommendationTrend$trend
target_index <- which(trend_df$period == "0m")

# 拼接对应的键名,提取值
target_key <- paste0("quoteSummary.result.recommendationTrend.trend.strongBuy", target_index)
strongBuy_0m <- as.numeric(unname(quote_summary_unlist[target_key]))

print(strongBuy_0m)

方法三:用正则表达式辅助(不推荐,仅作参考)

正则表达式可以用来匹配unlist后的键名,但因为unlist后的键名后缀是按数组顺序生成的,不如直接操作数据框可靠,不过也可以试试:

library(jsonlite)

i <- "MSFT"
json_object <- getURL(json_url)
quote_summary <- fromJSON(json_object)
quote_summary_unlist <- unlist(quote_summary)

# 先找到所有包含strongBuy的键,再结合period的位置匹配
trend_df <- quote_summary$quoteSummary$result[[1]]$recommendationTrend$trend
target_index <- which(trend_df$period == "0m")
strongBuy_keys <- grep("strongBuy", names(quote_summary_unlist), value = TRUE)
target_key <- strongBuy_keys[target_index]
strongBuy_0m <- as.numeric(unname(quote_summary_unlist[target_key]))

print(strongBuy_0m)

总的来说,方法一是最清晰、最不容易出错的,直接利用解析后的嵌套数据结构进行筛选,完全避开了unlist带来的键名冲突问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:26:23