【问题标题】:JSON arrays in R - {jsonlite} [duplicate]R中的JSON数组 - {jsonlite} [重复]
【发布时间】:2019-12-30 18:42:07
【问题描述】:

我目前正在编写一个轻量级 API 包装器,但对于 POST 请求的 JSON 有效负载有点头疼。
您可以在下面找到调用 api 所需的 JSON 结构:

{
    "points": [
        {
            "coord": [40.1, -73.0],
            "id": "test1"
        },
        {
            "coord": [37.784, -122.402]
        },
        {
            "coord": [41.84, -73],
            "id": "test2"
        }
    ]
}

在这里我开始使用jsonlite,我正在努力将coord 值作为一个数组(到目前为止,我只是设法将它们解析为一个字符串)。我可能错过了一些相当容易的东西。

library(jsonlite)

df <- data.frame(id = c(123, 456),
           coord = c("41.889083,12.470514",
                     "41.899009,12.477243"))

jsonified <- toJSON(list(`points` = df), pretty = T)

jsonified

【问题讨论】:

    标签: r json jsonlite


    【解决方案1】:

    将坐标拆分为长度为 2 的字符串向量列表。确保 coord 不是因素或将其转换为字符(我在创建数据框时添加了 stringsAsFactor = FALSE)。

    df$coord <- strsplit(df$coord, ",")
    df
    #>    id                coord
    #> 1 123 41.889083, 12.470514
    #> 2 456 41.899009, 12.477243
    
    jsonlite::toJSON(list(`points` = df), pretty = TRUE)
    #> {
    #>   "points": [
    #>     {
    #>       "id": 123,
    #>       "coord": ["41.889083", "12.470514"]
    #>     },
    #>     {
    #>       "id": 456,
    #>       "coord": ["41.899009", "12.477243"]
    #>     }
    #>   ]
    #> }
    

    【讨论】:

    • 发布答案后,我发现我标记为重复的问题。我暂时保留我的答案,但如果其他人同意,我很乐意删除/欢迎关闭为重复项
    猜你喜欢
    • 1970-01-01
    • 2022-01-11
    • 2015-11-13
    • 1970-01-01
    • 2016-05-18
    • 2021-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多