首页 > 解决方案 > 如何复制问题的嵌套 JSON 列表?

问题描述

我正在寻找我使用 .json 提取的 JSON 列表的帮助jsonlite。该列表中嵌入了其他列表,以及df嵌入的。我怎样才能最轻松地将内容复制到 SO 以寻求帮助?此外,一些数据是敏感的,所以我希望有一个解决方案可以随机化这些值,或者让我轻松地操纵它们。

标签: rnested-listspurrr

解决方案


如您所知,您可以使用解析 JSON 数据fromJSON()

要访问解析后的 JSON 数据中的项目,您可以使用与访问其他内容相同的方法,即 R 的访问器函数$,不要忘记它可以让您深入多层,例如your_data$details$result$locationHierarchy$city

这里有一些提示可以帮助您轻松地将数据复制为文本(例如复制到 SO 问题)

让我们拿一些数据

some_data <- iris[1, ]
some_data

# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1          5.1         3.5          1.4         0.2  setosa

您可以使用将任何 R 对象(例如数据框、向量、元素等)转换为 JSON 格式toJSON()

some_data_as_JSON <- toJSON(some_data)
some_data_as_JSON

# [{"Sepal.Length":5.1,"Sepal.Width":3.5,"Petal.Length":1.4,"Petal.Width":0.2,"Species":"setosa"}] 

在上面的示例中,如果您尝试复制/粘贴返回到 R 控制台的 JSON 数据,则会出错,因为特殊字符未正确转义。但是,有一个简单的方法可以解决这个问题dput()

dput(some_data_as_JSON)

# structure("[{\"Sepal.Length\":5.1,\"Sepal.Width\":3.5,\"Petal.Length\":1.4,\"Petal.Width\":0.2,\"Species\":\"setosa\"}]", class = "json")

现在您可以复制/粘贴该输出并将其分配为 R 对象!(所以这对于一个 SO 问题来说是完美的)

在对数据进行匿名处理时,您可以尝试使用随机函数,例如runif()为数字数据类型生成随机数据。对于字符,您可以随机尝试gsub()一个字符(这不会是强匿名化,但根据您要执行的操作可能没问题)。或者您可以使用生成随机字符串

library(stringi)
stri_rand_strings(3, 5, pattern = "[A-Za-z0-9]")

最后一个提示:SO 倾向于更喜欢小的可重现示例(而不是大示例),因此最好的办法是将一小部分数据复制到 SO,或者甚至制作一个全新的对象(一个小的就够了)


推荐阅读