将 json 对象附加到 json 数组

Append json object to json array

我正在尝试使用 jsonlite 将 json 对象附加到现有的 json 数组。我要添加的 json 对象是使用 toJSON.

创建的

例如:

library(jsonlite)

order1 <- list(a = 1, b = 2, c = 3)
order2 <- list(a = 4, b = 5, c = 6)

# step1 represents my already existing json array
step1 <- toJSON(list(order1, order2), auto_unbox = TRUE)
# [{"a":1,"b":2,"c":3},{"a":4,"b":5,"c":6}] 

# order3 is a list that I would like to append to the step1array
order3 <- list(a = 7, b = 8, c = 9)

我试过:

step2 <- toJSON(list(fromJSON(step1), order3), auto_unbox = TRUE)

但不幸的是,这吐出来了:

[[{"a":1,"b":2,"c":3},{"a":4,"b":5,"c":6}],{"a":7,"b":8,"c":9}] 

而我的预期结果是:

[{"a":1,"b":2,"c":3},{"a":4,"b":5,"c":6},{"a":7,"b":8,"c":9}] 

我错过了什么?

编辑:

我确实用rbind_pages解决了这个问题,但似乎效率有点低。如果有更好的解决方案,我洗耳恭听:)

toJSON(rbind_pages(list(fromJSON(step1), data.frame(order3))))
# [{"a":1,"b":2,"c":3},{"a":4,"b":5,"c":6},{"a":7,"b":8,"c":9}] 

做:

toJSON(rbind(fromJSON(step1), order3))

结果:

[{"a":1,"b":2,"c":3},{"a":4,"b":5,"c":6},{"a":7,"b":8,"c":9}]

fromJSON returns 一个数据框,那么你应该用 rbind 添加 order3 作为一个新行。如果您随后将此数据框转换为 JSON 它 returns 您正在寻找的内容。

您不必将 order3 从列表转换为数据框即可将其绑定为新行。在将数据框转换为 JSON.

之前无需将其转换为列表