如何将 R 数据帧转换为 name/value 对中的 Json?

How to convert R dataframe to Json in name/value pair?

我有以下 R 数据框:

        Values
Type1   123
Type2   4565
Type3   7812

我希望 JSON 输出为

{"Type1":123, "Type2":4565, "Type3":7812}

数字字段可以w/wo引用

我用jsonlite来JSON,输出是:

[{"Values":123,"_row":"Type1"}, 
 {"Values": 4565,"_row":"Type2"}, 
 {"Values": 7812,"_row":"Type3"}]

使用rjson的解决方案:

df <- data.frame(Values = c(123, 4565, 7812))
rownames(df) <- paste0("Type", 1:3)

library(rjson)
toJSON(setNames(df$Values, rownames(df)))

[1] "{\"Type1\":123,\"Type2\":4565,\"Type3\":7812}"

jsonlite 实际上是在保留您的数据结构,即保留您的 rownames (Type1, Type2, Type3 ).

无论如何,使用 jsonlite 你可以获得相同的行为:

> jsonlite::toJSON(df %>% t() %>% tibble::as_data_frame())
[{"Type1":123,"Type2":4565,"Type3":7812}] 

请注意,使用此解决方案您将丢失原始列名 Values。如果行名很重要而不是列名,您应该考虑以不同的方式定义数据,因为处理 rownames 可以得到 messy。您可以将类型添加为第二列或转置数据 - 一行,列数与类型一样多。