Множественный 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, я может неверно выразился. Меня вопрос оптимизации процесса интересует. Тут подсказали с базой, сейчас буду пробовать, с базами до этого не работал.



  • @lcatlas said in Множественный JSON:

    Просто это занимает минут 7.

    Очень долго что то...



  • Так 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 сурово )) Спасибо большое, потестирую.


Log in to reply