如何使用R包jsonlite实现JSON字符串的无损转换?
解决jsonlite转换JSON时布尔值变数组的问题
直接用fromJSON默认参数会把单个布尔值转成R里的长度1向量,再转JSON时就变成数组了,你可以这么处理:
- 解析JSON时添加
simplifyVector=FALSE参数,保留原始的层级结构,避免单个值被转为向量:
obj <- jsonlite::fromJSON('{"A":["a"], "B":true}', simplifyVector = FALSE)
这时obj$B是单个逻辑值,而非向量。
- 修改完对象后,转回JSON时加上
auto_unbox=TRUE,自动把长度1的向量拆回单个值:
jsonlite::toJSON(obj, auto_unbox = TRUE)
输出结果就是{"A":["a"],"B":true},和原始JSON完全一致。
如果已经用默认参数完成了解析,也可以手动把向量转成单个值,比如obj$B <- obj$B[[1]],再配合auto_unbox=TRUE转JSON,同样能得到正确结果。
内容的提问来源于stack exchange,提问作者abcdefg
相关产品推荐
相关产品推荐

