Редактор json

12 3
SeVlad
На сайте с 03.11.2008
Offline
1609
325

Коллеги, кто как работает с json-файлами?

Мне не часто приходилось, но всегда хватало akelpad-а и/или LibreOffice. А тут понадобилось почистить json от ненужного и столкнулся проблемкой.

В файле 3к строк в формате "ключ":"значение". Задача отобрать только нужные ключи. Но засада оказалась в том, что в значениях слишком много символов с серилизованными данным: +350к.

Либра ругается - "невозможно полностью загрузить данные по причине превышения максимального количества символов в ячейке". А в акеле не очень удобно.

Погуглив ничего внятного не нашел. Более-менее удобные есть онлайновые, но они ограничены в другом, да хочется дектопные под винду. Хотя в принципе и серверные (php-шные напр.) подойдут.

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
Sly32
На сайте с 29.03.2012
Offline
302
#1

Эх, тема мне настолько близкая и интересная, что попытаюсь влезть, в надежде на твою адекватность и без перехода на личности. Как раз вчера писал скрипт, который формирует респонс с json-файлом для REST API. Была задача - удалить из файла все ключи с пустыми value. Немного усложнялось тем, что пользователь могу вбить в форме пробел в поле и формировался json не с null а просто пустой ответ.По итогу написал лямбду на AWS, которой можно скормить файл и она вернет очищенный. Правда там ограничение на 10 мег на загружаемый файл. На пайтоне вышло пару строк. Не думал просто написать скрипт, который все это будет делать? 

Интересно было бы увидеть решение на другом языке

Алеандр
На сайте с 08.12.2010
Offline
183
#2

Поскольку большую часть проектов делаю на PHP, то и на нем же скрипт прохода или обработки. По необходимости, быстро и эффективно. Пару раз простейшие делал вообще bash. Вручную чистить тысячи строк - зачем? json_decode - array - foreach написать 5 минут, зато четко и без ошибок на выходе, вручную с таким массивом всегда остается шанс пропустить что-то.

Собственно, я в своих проектах давно отказался от mysql и схожих баз данных, именно с json-хранением и работаю.

SeVlad
На сайте с 03.11.2008
Offline
1609
#3
Алеандр #:
Вручную чистить тысячи строк - зачем?
Потому что надо. Надо оставить только то что надо, а остальное удалить. Задача - отобрать [не]нужное.
ArbNet
На сайте с 27.10.2019
Offline
124
#4
SeVlad #:
Потому что надо. Надо оставить только то что надо, а остальное удалить. Задача - отобрать [не]нужное.

Так отбери в чём проблема? Делов на несколько минут. Не умеешь, научись, не хочешь учится на фрилансе заказывай скрипт.

Обсуждение разработки на моём фреймворке https://discord.gg/23N4s9x2kp
SeVlad
На сайте с 03.11.2008
Offline
1609
#5
ArbNet #:
Так отбери в чём проблема? Делов на несколько минут.

Научи, гуру-сказочник :)

(что-то мне подсказывает что и тут ты так же далёк от темы, как первоклассник от квантовой физики.)

ArbNet
На сайте с 27.10.2019
Offline
124
#6
SeVlad #:
Научи, гуру-сказочник :)

У тебя целый интернет есть и мозг надеюсь в черепной коробке.

Мне проще сделать(но мне это не нужно) чем учить таких как ты.

SeVlad
На сайте с 03.11.2008
Offline
1609
#7
ArbNet #:
Мне проще сделать(но мне это не нужно) чем учить таких как ты.

Что у тебя пока получается - так это писать на сёрче сказочки о том что ты что-то можешь. Некоторые тебя раскололи ещё 2 года назад, но некоторые всё ещё верят. :)

Вот реально - ни твоё "мнение" ни тем более "знания" мне не интересны. И я бы попросил освободить в этом топике место для практиков.

Алеандр
На сайте с 08.12.2010
Offline
183
#8
SeVlad #:
Потому что надо.

В задаче поставлено "обязательно вручную"? Вряд ли. Вопрос не в том, надо ли, вопрос - почему вручную тысячи строк? Смысл огрызаться, когда тебе помогают?

На пыхе делается так:
1. Сначала команда json_decode  твоего массива на js. Сам массив можно считать из файла, можно задать как строку. Мне удобнее из файла. На выходе ты получишь массив значений array.
2. Если это простая связка "ключ":"значение", как у тебя в условии, то дальше foreach (массив as $key => $val). Перебираешь свой массивчик в связке ключ-значение.
3. Проверяешь условие. Тут указываешь уже то, какое тебе требуется: if ($key=='') или if ($val!='').. Даже регекспы можно заюзать, если что-то мудреное нужно исключить.
4. Всё, заносишь в новый массив результат и дальше его либо выводишь на экран, либо в файл сохраняешь. Как удобно.

Один раз написал, всегда пользуешься, только меняешь условия if по задаче.

Ты же работаешь на серваках, бери любой, да хоть клиентский, за 10 минут пишешь скрипт, подкидываешь файлик и получаешь результат.

Ручную обработку я могу предположить только в том случае, если чистить нужно какие-то разнообразные данные, не поддающиеся систематизации. Но тут я не подскажу, это вопрос к тому, кто создал такой идиотен-массив. Да и то, в большей степени, почти всегда можно найти закономерность того, что нужно оставить или того, что нужно удалить, а от этого поменяются лишь if.

SeVlad
На сайте с 03.11.2008
Offline
1609
#9
Алеандр #:
В задаче поставлено "обязательно вручную"? Вряд ли. Вопрос не в том, надо ли, вопрос - почему вручную тысячи строк? Смысл огрызаться, когда тебе помогают?

Я не огрызаюсь. Но как ты себе представляешь не вручную задать десяток фильтров для отбора нужных строк?

Алеандр #:
Один раз написал, всегда пользуешься, только меняешь условия if по задаче.

Да написать-то не проблема (но надо ещё и аякс заюзать, а тут я плаваю). Только вот не целесообразно. И времени уйдёт  много больше, чем я это сделаю в акеле+либре и надо это.. ну чуть ли не разово.

Мне:

а) интересно если ли программа/скрипт, который справиться с моей конкретной задачкой.

б) кто что юзает на практике. Ведь и структура joson у всех разная и задачи.

LEOnidUKG
На сайте с 25.11.2006
Offline
1722
#10
Может что-то из этого списка подойдёт: http://www.butleranalytics.com/15-json-editors-free-online-windows-mac-browser/
✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий