Разбор списка JSON-URL через fromjson

У меня есть таблица URL, каждая из которых указывает на определенный вывод JSON. Я хотел бы разобрать их через fromJSON (или любой другой анализатор json), чтобы извлечь данные из этих выходных данных json и объединить их в список списков.

Мой код настроен следующим образом:

pages <- list()
for (i in 1:length(urltable))
{
mydata<-fromJSON(urltable[i], flatten=TRUE)
pages[[i]] <- mydata$entries
}

который отображает errorterm:

Error in (function (classes, fdef, mtable) :
unable to find inherited method for function 'fromJSON' for signature '"list", "missing"'

Если я проверю это с вставкой одного URL в fromJSON(), это работает, так что я полагаю, что проблема заключается в том, что fromJSON не читает таблицу?

У кого-нибудь есть предложение, как это сделать?

Дополнение: urltable представляет собой таблицу из 1 столбца и 326 строк. Глава таблицы:

    url
1     http://zoeken.kvk.nl/Jsonsearch.ashx?site=handelsregister&partialfields=&q=Aalzum&start=10
2     http://zoeken.kvk.nl/Jsonsearch.ashx?site=handelsregister&partialfields=&q=Aalzum&start=20
3 http://zoeken.kvk.nl/Jsonsearch.ashx?site=handelsregister&partialfields=&q=Aardenburg&start=10
4 http://zoeken.kvk.nl/Jsonsearch.ashx?site=handelsregister&partialfields=&q=Aardenburg&start=20
5 http://zoeken.kvk.nl/Jsonsearch.ashx?site=handelsregister&partialfields=&q=Aardenburg&start=30
6 http://zoeken.kvk.nl/Jsonsearch.ashx?site=handelsregister&partialfields=&q=Aardenburg&start=40

Дополнение 2 подмножество urltable, dput(subset_urltable):

structure(list(url = c("http://zoeken.kvk.nl/Jsonsearch.ashx?site=handelsregister&partialfields=&q=Aalzum&start=10","http://zoeken.kvk.nl/Jsonsearch.ashx?site=handelsregister&partialfields=&q=Aalzum&start=20","http://zoeken.kvk.nl/Jsonsearch.ashx?site=handelsregister&partialfields=&q=Aardenburg&start=10","http://zoeken.kvk.nl/Jsonsearch.ashx?site=handelsregister&partialfields=&q=Aardenburg&start=20","http://zoeken.kvk.nl/Jsonsearch.ashx?site=handelsregister&partialfields=&q=Aardenburg&start=30","http://zoeken.kvk.nl/Jsonsearch.ashx?site=handelsregister&partialfields=&q=Aardenburg&start=40","http://zoeken.kvk.nl/Jsonsearch.ashx?site=handelsregister&partialfields=&q=Aardenburg&start=50","http://zoeken.kvk.nl/Jsonsearch.ashx?site=handelsregister&partialfields=&q=Aardenburg&start=60","http://zoeken.kvk.nl/Jsonsearch.ashx?site=handelsregister&partialfields=&q=Aardenburg&start=70","http://zoeken.kvk.nl/Jsonsearch.ashx?site=handelsregister&partialfields=&q=Aardenburg&start=80")), row.names = c(NA, -10L), class = "data.frame", .Names = "url")

1 ответ

Решение

fromJSON ожидает строку json, в вашем случае вы пытаетесь извлечь данные json и преобразовать их за один раз. Вам нужно будет передать данные с вашего URL на fromJSON, Сделать что-то подобное

mydata<-fromJSON(url(urltable[i]), flatten=TRUE)

url будет передавать извлеченные данные fromJSON функция.

Полное решение должно выглядеть так

pages <- list()
for (i in 1:length(urltable))
{
mydata<-fromJSON(url(as.character(urltable[i])), flatten=TRUE)
pages[[i]] <- mydata$entries
}

с curl пакет установлен, вы можете обойтись без явного использования url функция. Кроме того, если вы хотите перебрать все строки urltable не использовать length(urltable) так как он вернет число столбцов в вашем фрейме данных, которое здесь равно 1, вместо length(urltable$url)

pages <- list()
for (i in 1:length(urltable$url))
{
    mydata<-fromJSON(as.character(urltable$url[i]), flatten=TRUE)
    pages[[i]] <- mydata$entries
}
Другие вопросы по тегам