【问题标题】:How to merge 2 json objects in R?如何在 R 中合并 2 个 json 对象?
【发布时间】:2018-10-06 14:58:45
【问题描述】:

我有 2 个 json 对象,想将它们合并为 R 中的一个唯一对象。

这里是文件内容:

对象 1:

{
    "value": [
        "1",
        "2",
        "3"
    ]
}

对象 2:

{
    "value": [
        "4",
        "5",
        "6"
    ]
}

预期结果

{
    "value": [
        "1",
        "2",
        "3",
        "4",
        "5",
        "6"
    ]
}

我在其他语言中发现了类似的问题(例如this question),但我想在 R 中这样做(并且我使用 jqr 包)。

你有什么想法吗? 谢谢。

【问题讨论】:

  • 使用jsonlite::fromJSON 转换为数据帧,使用jsonlite::toJSON 合并、转换回JSON。

标签: r json


【解决方案1】:

我仍然在思考jqr,因此可能有更好、更简洁的解决方案,而最后不需要额外的paste

jqr::jq(paste0(js1, js2), ".value[]") %>%     ## extract the 'value's
  combine() %>%                               ## combine to a single JSON
  paste0('{"value":', .,"}")                  ## construct output

  # [1] "{\"value\":[\"1\", \"2\", \"3\", \"4\", \"5\", \"6\"]}"

【讨论】:

    【解决方案2】:

    为了演示@Gregor 的建议,这里有一个例子。

    # Store JSON content as lists (lst1, lst2)
    library(jsonlite);   
    lst1 <- fromJSON(txt =
        '{
        "value": [
            "1",
            "2",
            "3"
        ]
    }')    
    lst2 <- fromJSON(txt =
        '{
        "value": [
            "4",
            "5",
            "6"
        ]
    }')
    
    # Merge lst1 and lst2 and output as JSON
    toJSON(Map(c, lst1, lst2))
    #{"value":["1","2","3","4","5","6"]}
    

    注意,这适用于您提供的示例数据;如果您有多个键(可能某些键存在于一个 JSON 中,而另一个不存在),则需要调整组合/合并策略。

    【讨论】:

      猜你喜欢
      • 2019-08-16
      • 1970-01-01
      • 2022-09-29
      • 2021-01-11
      • 2019-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-09
      相关资源
      最近更新 更多