如何在R中合并2个json对象?

时间:2018-04-26 02:38:22

标签: r json

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

这里是文件的内容:

对象1:

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

对象2:

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

预期结果

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

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

你知道吗? 谢谢。

2 个答案:

答案 0 :(得分:5)

为了证明@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中而不是另一个密钥),则需要调整组合/合并策略。

答案 1 :(得分:3)

我仍然在考虑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\"]}"