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

jsonlite将弃用asJSON(keep_vec_names=TRUE)参数及R代码问题咨询

解决jsonlite asJSON(keep_vec_names=TRUE) 弃用警告问题

你遇到的这个警告是因为jsonlite的未来版本会移除对**命名向量传入keep_vec_names=TRUE**的支持,而你用到的manipulateWidget包(和Shiny关联的那个)底层可能调用了这个即将被弃用的用法。下面给你几个可行的解决思路,还有补全后的可运行代码示例:

一、核心修复思路

1. 遵循jsonlite新规范处理命名向量

jsonlite官方推荐把命名向量转换成列表再处理,这样完全不需要依赖keep_vec_names参数,生成的JSON结构和之前的效果一致。比如原来的代码如果是:

asJSON(your_named_vector, keep_vec_names = TRUE)

直接改成:

asJSON(as.list(your_named_vector))

这是最稳妥的长期解决方案。

2. 适配manipulateWidget的临时/永久方案

  • 优先升级依赖包:先把manipulateWidget和jsonlite都更到最新版本,大概率开发者已经修复了这个兼容性问题,直接升级就能解决警告。
  • 临时兼容hack(谨慎使用):如果暂时没法升级,可以在你的Shiny应用或者脚本开头添加一段代码,临时覆盖jsonlite的向量处理逻辑,保留keep_vec_names的支持:
    assignInNamespace(
      "asJSON.vector",
      function(x, ..., keep_vec_names = TRUE) {
        jsonlite:::asJSON.vector(x, ..., keep_vec_names = TRUE)
      },
      ns = "jsonlite"
    )
    
    注意:这只是过渡方案,长远来看还是建议升级包或者调整代码逻辑,避免后续版本出现报错。

二、补全后的可复现代码

我把你提供的代码补全,加上了兼容处理的选项,确保能正常运行:

library(ggplot2)
library(plotly)
library(manipulateWidget)
library(data.table)
library(jsonlite)

# 可选:添加临时兼容处理(如果升级包后仍有警告再用)
# assignInNamespace("asJSON.vector", function(x, ..., keep_vec_names = TRUE) jsonlite:::asJSON.vector(x, ..., keep_vec_names = TRUE), ns = "jsonlite")

my_data <- data.table(
 DAT_RLV = as.POSIXct(c("2017-01-20","2017-01-21","2017-01-22", "2017-01-23","2017-01-24")),
 VOL_CSO = c(0,4,3,4,2))

graphe_conso <- ggplot(data = my_data)+ 
  geom_line(aes(x = DAT_RLV,y = VOL_CSO),colour = "darkgreen")+ 
  labs(x = "Date", y = "My Value") +
  theme_minimal()

# 用manipulateWidget交互式展示图表
manipulateWidget(
  plotly::ggplotly(graphe_conso),
  # 示例控件:日期范围选择器
  date_range = mwDateRange(min = my_data$DAT_RLV, max = my_data$DAT_RLV)
)

如果尝试以上方法后还是有问题,你可以去manipulateWidget的官方仓库提交issue,说明这个jsonlite版本兼容的问题,开发者应该会很快跟进修复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:33:21