r - 将字符串转换为json字符串并在R中解析

标签 r

我有一个数据,其中一列为 json 字符串:

reservation  reasons
1592         [{"name"=>"jorge", "value"=>"MX"}, {"name"=>"Billing phone number", "value"=>"1123"}, {"name"=>"BillingCountry", "value"=>"USA"}]
1597         [{"name"=>"BillingAddress_Country", "value"=>"IN"}, {"name"=>"Billing phone number country code", "value"=>"IN"}, {"name"=>"Latest amount", "value"=>"583000000"}]

我想按如下方式解析该列:

reservation   name                                value
1592          jorge                                mx
1592          Billing phone number                 1123
1592          BillingCountry                       USA
1597          BillingAddress_Country               IN
1597          Billing phone number country code    IN
1597          Latest amount                        583000000

我就是我们 我在 R 中使用 jsonlite。我的代码中出现以下错误:

data<-read.csv("data.csv")
json<-data$reasons
mydf <- fromJSON(json)
Error: Argument 'txt' must be a JSON string, URL or file.

谁能告诉我我哪里出错了?我需要做哪些修改?非常感谢!

最佳答案

这对我来说看起来不像普通的 JSON(或者对 fromJSON 来说,这让我感觉好一点了)。也许这是它的一些特殊情况或其他什么(?)。 更新:@camille 将其识别为 Ruby Hash。

无论如何,我们都可以修复它:

reasons <-  '{"name"=>"jorge", "value"=>"MX"}, {"name"=>"Billing phone number", "value"=>"1123"}, {"name"=>"BillingCountry", "value"=>"USA"}'

reasons <- gsub("=>", ":", reasons)
reasons <- gsub("[{}]", "", reasons)
reasons <- paste0("{",reasons,"}")

fromJSON(reasons)
$`name`
[1] "jorge"

$value
[1] "MX"

$name
[1] "Billing phone number"

$value
[1] "1123"

$name
[1] "BillingCountry"

$value
[1] "USA"

关于r - 将字符串转换为json字符串并在R中解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51143588/

相关文章:

R:合并具有多个条件和多个逻辑运算符的数据帧

用于将新列返回到数据集的 R 函数

r - 为数据框的每个列(变量)创建单独的向量

R - 计算数据框中有多少行具有相同的值并且日期在 x 天内

r - str_extract_all : return all patterns found in string concatenated as vector

r - 如果语句在 Shiny 中不起作用

r - igraph和tnet之间的集中度度量上的差异

r - 更改图例边框和图例标题之间的间距

r - dplyr::如何使用函数中的变量引用进行变异?

r - 对于参数 `axis` 的非整数值,函数 `mgp[3]` 表现异常