【问题标题】:How to parse JSON with fromJSON on a dataframe column?如何在数据框列上使用 fromJSON 解析 JSON?
【发布时间】:2015-08-20 00:33:42
【问题描述】:

我有以下 data.frame,其中有一列称为“json”和两行 JSON 数据:

df <- data.frame(json = c('{"client":"ABC Company","totalUSD":7110.0000,"durationDays":731,"familySize":4,"assignmentType":"Long Term","homeLocation":"Australia","hostLocation":"United States","serviceName":"Service ABC","homeLocationGeoLat":-25.274398,"homeLocationGeoLng":133.775136,"hostLocationGeoLat":37.09024,"hostLocationGeoLng":-95.712891}', '{"client":"ABC Company","totalUSD":7110.0000,"durationDays":731,"familySize":4,"assignmentType":"Long Term","homeLocation":"Australia","hostLocation":"United States","serviceName":"Service XYZ","homeLocationGeoLat":-25.274398,"homeLocationGeoLng":133.775136,"hostLocationGeoLat":37.09024,"hostLocationGeoLng":-95.712891}'))

我正在尝试使用 rjson 包中的 fromJSON 将 JSON 解析为 data.frame。

我将该列转换为字符类型,然后尝试解析:

> df$json <- as.character(df$json)
> final <- fromJSON(json_str = df$json)

但是,它似乎只给了我 JSON 的第一行,而我希望有 2 行。

如何将 JSON 从 df$json 解析为 data.frame?

【问题讨论】:

    标签: json r rjson


    【解决方案1】:

    您可能需要本练习的结果数据框,所以:

    do.call(rbind.data.frame, lapply(df$json, rjson::fromJSON))
    
    ##         client totalUSD durationDays familySize assignmentType homeLocation  hostLocation serviceName homeLocationGeoLat
    ## 2  ABC Company     7110          731          4      Long Term    Australia United States Service ABC           -25.2744
    ## 21 ABC Company     7110          731          4      Long Term    Australia United States Service XYZ           -25.2744
    ##    homeLocationGeoLng hostLocationGeoLat hostLocationGeoLng
    ## 2            133.7751           37.09024          -95.71289
    ## 21           133.7751           37.09024          -95.71289
    

    完全相同的结果将来自:

    do.call(rbind.data.frame, lapply(df$json, jsonlite::fromJSON))
    do.call(rbind.data.frame, lapply(df$json, RJSONIO::fromJSON))
    

    【讨论】:

    • loadNamespace(name) 中的错误:没有名为“rjson”的包
    • 嗯,你安装了吗
    • 只写库(rjson)是行不通的。 install.packages('rjson') 现在它工作了。谢谢:)
    • 我认为你可能需要学习一下 R 和 SO 的礼仪。
    • 是的!我正在努力:))
    猜你喜欢
    • 2017-09-11
    • 1970-01-01
    • 2021-09-24
    • 2021-01-18
    • 2013-01-15
    • 1970-01-01
    • 2019-08-15
    • 1970-01-01
    • 2015-12-11
    相关资源
    最近更新 更多