如何读取JSON文件上的内部列表并将其转换为数据框?

时间:2019-01-21 13:37:15

标签: r json

我正在尝试读取json文件并提取一些文件以创建数据框。

我已经尝试了好几次,但是由于它是一个内部列表,所以我无法获取变量“产品类型”。

我需要提取以下变量: 用户名,用户电子邮件和产品类型。

名称和电子邮件很容易获得,但是有人可以帮助我获得产品类型吗?

非常感谢

require("jsonlite")
json_file <-NULL
json_file <- fromJSON("RStudio/teste2.json")

json_file<- json_file$data$


json_file$data <- lapply(json_file$data, function(x) {
  x[sapply(x, is.null)] <- NA
  unlist(x)
})

json_file$data<-as.data.frame(do.call("rbind", json_file$data))

test <- cbind.data.frame(
                          json_file$data$user$name,
                          json_file$data$user$email,
                          json_file$data$user$Prducts$Type

                          )

这是我正在阅读的json的示例

{
  "statusCode": 200,
  "meta": {
    "code": 200,
    "message": "OK"
  },
  "data": [
   {
  "user": {
    "id": "122344535423sfdf",
    "name": "John Silva",
    "email": "john@mail.com",
    "birthdate": "1982-10-12"

  },

  "products": [
    {
      "id": 101,
      "type": "meals",
      "name": "salad",
      "price": 34567

    }
  ]


},
{
  "user": {
    "id": "1rwrwtry533ef",
    "name": "Mary Gomes",
    "email": "mary@mail.com",
    "birthdate": "1989-12-15"

  },

  "products": [
    {
      "id": 101,
      "type": "drinks",
      "name": "orange juice",
      "price": 199

    }
  ]


}
  ]
}

1 个答案:

答案 0 :(得分:0)

# Load the package required to read JSON files.
library("rjson")

# Give the input file name to the function.
result <- fromJSON(file = "input.json")

# Convert JSON file to a data frame.
json_data_frame <- as.data.frame(result)

现在json_data_frame将包含所需的json的确切数据帧。

您可以查看:https://www.tutorialspoint.com/r/r_json_files.htm