在R

时间:2015-08-20 18:56:34

标签: json r rjson

我在JSON中有两个相同类型的对象:

json <- '[{"client":"ABC Company","totalUSD":1870.0000,"durationDays":365,"familySize":4,"assignmentType":"Long Term","homeLocation":"Chicago, IL","hostLocation":"Lyon, France","serviceName":"Service ABC","homeLocationGeoLat":41.8781136,"homeLocationGeoLng":-87.6297982,"hostLocationGeoLat":45.764043,"hostLocationGeoLng":4.835659},{"client":"ABC Company","totalUSD":21082.0000,"durationDays":365,"familySize":4,"assignmentType":"Long Term","homeLocation":"Chicago, IL","hostLocation":"Lyon, France","serviceName":"Service ABC","homeLocationGeoLat":41.8781136,"homeLocationGeoLng":-87.6297982,"hostLocationGeoLat":45.764043,"hostLocationGeoLng":4.835659}]'

如何将两个对象解析为相同的data.frame,以便我有两行共享相同的列?

换句话说,我有一个JSON对象列表,我试图将其解析为data.frame。

我试过这个:

p <- rjson::newJSONParser()
p$addData(json)
df <- p$getObject()

这似乎返回一个列表,而我想要一个data.frame:

> df
[[1]]
[[1]]$client
[1] "ABC Company"

[[1]]$totalUSD
[1] 1870

[[1]]$durationDays
[1] 365

[[1]]$familySize
[1] 4

[[1]]$assignmentType
[1] "Long Term"

[[1]]$homeLocation
[1] "Chicago, IL"

[[1]]$hostLocation
[1] "Lyon, France"

[[1]]$serviceName
[1] "Service ABC"

[[1]]$homeLocationGeoLat
[1] 41.87811

[[1]]$homeLocationGeoLng
[1] -87.6298

[[1]]$hostLocationGeoLat
[1] 45.76404

[[1]]$hostLocationGeoLng
[1] 4.835659


[[2]]
[[2]]$client
[1] "ABC Company"

[[2]]$totalUSD
[1] 21082

[[2]]$durationDays
[1] 365

[[2]]$familySize
[1] 4

[[2]]$assignmentType
[1] "Long Term"

[[2]]$homeLocation
[1] "Chicago, IL"

[[2]]$hostLocation
[1] "Lyon, France"

[[2]]$serviceName
[1] "Service ABC"

[[2]]$homeLocationGeoLat
[1] 41.87811

[[2]]$homeLocationGeoLng
[1] -87.6298

[[2]]$hostLocationGeoLat
[1] 45.76404

[[2]]$hostLocationGeoLng
[1] 4.835659

如何解析这个JSON对象列表?

1 个答案:

答案 0 :(得分:3)

编辑:在这种情况下,您需要do.callrbind

do.call(rbind.data.frame, rjson::fromJSON(json))

或使用您的方法:

p <- rjson::newJSONParser()
p$addData(json)
df <- p$getObject()
do.call(rbind, df)