Разобрать список JSON URL через fromjson - PullRequest
0 голосов
/ 01 мая 2018

У меня есть таблица 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 Ответ

0 голосов
/ 01 мая 2018

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
}
...