如何在R中导出JSON文件时去除特定类字典字符串的引号?
解决R中导出混合JSON内容时特定字符串去引号的问题
你需要导出的内容包含普通字符串、类字典格式字符串和列表,要求类字典字符串输出时不带引号,直接用jsonlite::write_json无法实现——因为它会严格遵循JSON规范给所有字符串自动添加引号。可以通过手动处理每个元素的输出格式,再拼接写入文件来达成需求:
实现代码
library(jsonlite) x <- c("apples", "oranges") y <- "{'add': 'bananas'}" z <- list("mangoes", "pears") # 分别处理每个元素的输出格式 # 普通字符串转成带双引号的标准JSON格式 processed_x <- sapply(x, function(s) toJSON(s, auto_unbox = TRUE)) # 类字典字符串直接保留原格式 processed_y <- y # 列表转成JSON数组格式 processed_z <- toJSON(z, auto_unbox = FALSE) # 合并所有行 output_lines <- c(processed_x, processed_y, processed_z) # 写入文件,每行一个元素 cat(paste(output_lines, collapse = "\n"), "\n", file = "output.json")
补充说明
jsonlite::write_json是为生成标准JSON设计的,会自动给所有字符串类型对象添加引号;全局设置quote=F会去掉所有字符串的引号,不符合你的精准需求。- 手动处理每个元素可以精准控制输出格式:普通字符串用
toJSON转成合法JSON字符串,类字典字符串直接复用原内容,列表转成JSON数组,最后用cat拼接各行写入文件,就能得到你想要的结果。
内容的提问来源于stack exchange,提问作者GAURAV DIWAN
相关产品推荐
相关产品推荐

