Множественный JSON
-
Всем добрый день, подскажите пожалуйста по массиву JSON.
Несколько тысяч JSON отдается на одной странице, возможно ли как-то сделать проще, чем парсить это все в список, а потом перебором собирать значения?
Речь о прокси. До этого не сталкивался с таким, сильно не пинайте )))
Забирать по одному возможности нет, в теории, можно забрать все это со страницы регуляркой, насколько я понимаю, но видится мне, так как цифр левых много - будет достаточно гемморно.
-
@lcatlas said in Множественный JSON:
Всем добрый день, подскажите пожалуйста по массиву JSON.
Несколько тысяч JSON отдается на одной странице, возможно ли как-то сделать проще, чем парсить это все в список, а потом перебором собирать значения?
Речь о прокси. До этого не сталкивался с таким, сильно не пинайте )))
Забирать по одному возможности нет, в теории, можно забрать все это со страницы регуляркой, насколько я понимаю, но видится мне, так как цифр левых много - будет достаточно гемморно.
Если вы получаете прокси с какого то сервиса, то обычно на этих сервисах можно изменить вид получения, что описывается в API сервиса.
С помощью json очень удобно, быстро и легко доставать любые значения. Главное правильно написать код.
Вам подойдет этот модуль - https://community.bablosoft.com/topic/6192/модуль-парсинга-json
-
Это не сервис, это сайт с кучей проксей выложенных в JSON формате, с парсера. Никаких вариантов получения/апи и тд - нет.
Спасибо большое за ответ, хотел просто поинтересоваться, нет ли более быстрого варианта, нежели парсить по одному значению через таблицу.
Дело в том, что у меня массив данных, там 10к одинаковых JSON по формату, JSON модуль читает JSON построчно, насколько я понял и потестировал.
Мне бы хотелось обработать файл в 10 тысяч одинаковых JSON значений скопом.
Ибо если у меня уже есть пробел между данными (а он там есть) - чтение прекращается, возможно стоит убрать пробел между данными, хммм, вопрос лишь как между } { убрать это пробел )
Но что-то мне подсказывает, что дело не в пробеле ) Хотя может и в нем, и я туплю.
-
@lcatlas said in Множественный JSON:
Это не сервис, это сайт с кучей проксей выложенных в JSON формате, с парсера. Никаких вариантов получения/апи и тд - нет.
Спасибо большое за ответ, хотел просто поинтересоваться, нет ли более быстрого варианта, нежели парсить по одному значению через таблицу.
Дело в том, что у меня массив данных, там 10к одинаковых JSON по формату, JSON модуль читает JSON построчно, насколько я понял и потестировал.
Мне бы хотелось обработать файл в 10 тысяч одинаковых JSON значений скопом.
Ибо если у меня уже есть пробел между данными (а он там есть) - чтение прекращается, возможно стоит убрать пробел между данными, хммм, вопрос лишь как между } { убрать это пробел )
Недавно это делал. Через список и базу там за 1 сек обрабатытваеться.
-
Ага, значит требуется еще применить базу? Не расскажите пожалуйста поподробнее, с базой особо пока не работал.
Спасибо, сейчас поковыряюсь )
-
@lcatlas не подходит модуль, тогда пишите код. Из всего JSON можно получать нужные значения в список и дальше уже работать с ними.
Убирать проблемы можно разными способами, той же регулярой к примеру.
.replace(/ /g, "")
-
Так я и так получаю нужные значения в список и работаю с ними ) Просто это занимает минут 7.
Нене, все работает, уважаемый Uraabk, я может неверно выразился. Меня вопрос оптимизации процесса интересует. Тут подсказали с базой, сейчас буду пробовать, с базами до этого не работал.
-
-
Так 10 тысяч )))
Я просто реально видимо туплю и JSON может сразу обработать всю таблицу махом, все 10к, но судя по тому, что человек использовал базу, все не так просто и он работает построчно ))
-
@lcatlas said in Множественный JSON:
Так 10 тысяч )))
Да хоть пол миллиона. Все равно за секунду обработает
-
@lcatlas Думаю вы действительно тупите ) Но без сайта и конкретного json вы тут гоняете воздух. Используйте поиск по форума, было миллион тем по парсингу json
-
Тогда я правда туплю. У меня есть список, в списке куча одинаковых строк с одинаковыми значениями, меняется только несколько цифр. Пытаюсь скормить этот список - Syntax Error, чтобы я не пробовал. И через (0), и просто так. Как только значение одно, а не 10 сразу, он все отлично обрабатывает.
Да в том то и дело, что прежде чем создать топик я поднял 30 топиков изначально.
-
@lcatlas said in Множественный JSON:
Тогда я правда туплю. У меня есть список, в списке куча одинаковых строк с одинаковыми значениями, меняется только несколько цифр. Пытаюсь скормить этот список - Syntax Error, чтобы я не пробовал. И через (0), и просто так. Как только значение одно, а не 10 сразу, он все отлично обрабатывает.
Да в том то и дело, что прежде чем создать топик я поднял 30 топиков изначально.
Скиньте тестовый скрипт или приложите файл со строками. Так будет быстрее
-
Пример:
{"port": 8017, "host": "8.8.8.8", "from": "slash", "export_man": ["8.8.8.8", "8.8.8.8", "8.8.8.8"], "ty": "http", "resp": 4.86, "us": "en"} {"port": 8018, "host": "9.9.9.9", "from": "slash", "export_man": ["9.9.9.9", "9.9.9.9", "9.9.9.9"], "ty": "http", "resp": 5.76, "us": "en"}
И таких 10к строк.
Использую:
var json = JSON.parse([[FOREACH_DATA]]) VAR_HOST = json.host VAR_PORT = json.port
Так как ругается на синтакс. Но, скорее всего это мне просто знаний не хватает.
-
@lcatlas said in Множественный JSON:
Пример:
{"port": 8017, "host": "8.8.8.8", "from": "slash", "export_man": ["8.8.8.8", "8.8.8.8", "8.8.8.8"], "ty": "http", "resp": 4.86, "us": "en"} {"port": 8018, "host": "9.9.9.9", "from": "slash", "export_man": ["9.9.9.9", "9.9.9.9", "9.9.9.9"], "ty": "http", "resp": 5.76, "us": "en"}
И таких 10к строк.
Использую:
var json = JSON.parse([[FOREACH_DATA]]) VAR_HOST = json.host VAR_PORT = json.port
Так как ругается на синтакс. Но, скорее всего это мне просто знаний не хватает.
Судя по названию переменной [[FOREACH_DATA]] вы перебираете весь список через действие foreach BAS. Перебирать большой массив через действия BAS выходит медленнее чем просто на js.
Я просил тестовый скрипт, чтобы понять, где и в каком виде у вас данные.
-
@lcatlas если я все верно понял, то примерно так получается в выполнить код.
//задаем переменные [[RESOURCE]] = '{"port": 8017, "host": "8.8.8.8", "from": "slash", "export_man": ["8.8.8.8", "8.8.8.8", "8.8.8.8"], "ty": "http", "resp": 4.86, "us": "en"} {"port": 8018, "host": "9.9.9.9", "from": "slash", "export_man": ["9.9.9.9", "9.9.9.9", "9.9.9.9"], "ty": "http", "resp": 5.76, "us": "en"}'; [[IP]] = []; [[PORT]] = []; //делаем магию [[RESULT]] = "[" + [[RESOURCE]].replace(/\} \{/g, "},{") + "]"; //получаем данные из json var json = JSON.parse([[RESULT]]); for (i = 0; i < json.length; i++) { [[IP]].push(json[i].host); [[PORT]].push(json[i].port); }
-
@uraabk сурово )) Спасибо большое, потестирую.