【发布时间】:2016-04-19 22:47:15
【问题描述】:
我正在使用的 API 需要我向其发送 JSON 消息,例如:
y <- '[{"a":1, "b":"select", "c":["A", "B", "C"]},
{"a":2, "b":"text"},
{"a":3, "b":"select", "c":["D", "E", "F", "G"]}]'
请注意,在 "b" : "select" 的情况下,还有另一个变量 c,其值为数组。
当我尝试运行fromJSON(y)(在jsonlite 包中)时,我得到一个data.frame,其中第三列是一个列表:
> z <- fromJSON(y)
> class(z)
[1] "data.frame"
> z %>% glimpse()
Observations: 3
Variables: 3
$ a (int) 1, 2, 3
$ b (chr) "select", "text", "select"
$ c (list) A, B, C, NULL, D, E, F, G
但是当我将它转换回JSON (这是我要发送到API 的格式)时,c 变量出现在不应该出现的位置。
[{"a":1,"b":"select","c":["A","B","C"]},
{"a":2,"b":"text","c":{}},
{"a":3,"b":"select","c":["D","E","F","G"]}]
是否有另一种 R 数据结构可以使用 jsonlite(或其他东西)可靠地将我从数据帧获取到原始 JSON 消息?它是如何工作的?
【问题讨论】:
-
我认为如果你使用
RJSONIO:fromJSON然后jsonlite::toJSON你会得到你想要的。