powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Просто Трёп [закрыт для гостей] / Написал парсер JSON приличный за пару вечеров., Поиск: Искать сообщения, созданные автором: Псина  
20 сообщений из 20, страница 1 из 1
Просто Трёп / Написал парсер JSON приличный за пару вечеров.
    #627983
Псина
Скрыть профиль Поместить в игнор-лист
Участник
[заблокирован]
Раньше думал, что это ебать как сложно.
На деле задача свелась к двум этапам
1. Превратить JSON в поток событий "встретил начало строки", "встретил двоеточие", "встретил начало списка" (скобка квадратная) и т.п.
2. Ловилка этих событий, формирующая распарсенный объект.

Парсилка получилась слегка тупая, например экранирование в строках она не поймёт, ну и хуй с ним.
...
Рейтинг: 0 / 0
Просто Трёп / Написал парсер JSON приличный за пару вечеров.
    #627996
Псина
Скрыть профиль Поместить в игнор-лист
Участник
[заблокирован]
W  24.11.2023, 18:52
[игнорируется]
Сильтровая Мирево-Плоскостная Прала  24.11.2023, 18:51
[игнорируется]
Парсилка получилась слегка тупая, например экранирование в строках она не поймёт, ну и хуй с ним.
для конфигов чтоле?
Ну типа.
И это уже дохуя не мало.
Конфиг радиогугла:
Код: JSON
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
{
  "bands" : [
    {
      "name" : "testnamedududu",
      "freq" : 433075000,
      "gain" : 320,
      "fft" : 1024,
      "bin-start" : 720,
      "bin-width" : 64,
      "sq-level" : 12,
      "sq-time" : 200,
      "filter-hz" : [150, 5500],

      "record" : {
        "path" : "/mnt/ramdisk/data",
        "prefix" : "dududu-",
        "file-time-ms-limit" : [1500, 60000],
        "limit-size-kb" : 1900,
        "tail-ms" : 100,
        "timeout-ms" : 6000,
        "opus-bitrate" : 23000
      },

      "record-iq" : {
        "enable" : 0,
        "pre" : 48000,
        "post" : 48000,
        "path" : "/mnt/ramdisk/iqdata",
        "prefix" : "debug-iq-",
        "timeout-ms" : 6000
      }
    }
  ]
}
...
Рейтинг: 0 / 0
Просто Трёп / Написал парсер JSON приличный за пару вечеров.
    #628005
Псина
Скрыть профиль Поместить в игнор-лист
Участник
[заблокирован]
W  24.11.2023, 18:56
[игнорируется]
Сильтровая Мирево-Плоскостная Прала  24.11.2023, 18:54
[игнорируется]
W  24.11.2023, 18:52
[игнорируется]
Сильтровая Мирево-Плоскостная Прала  24.11.2023, 18:51
[игнорируется]
Парсилка получилась слегка тупая, например экранирование в строках она не поймёт, ну и хуй с ним.
для конфигов чтоле?
Ну типа.
И это уже дохуя не мало.
Конфиг радиогугла:
Код: JSON
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
{
  "bands" : [
    {
      "name" : "testnamedududu",
      "freq" : 433075000,
      "gain" : 320,
      "fft" : 1024,
      "bin-start" : 720,
      "bin-width" : 64,
      "sq-level" : 12,
      "sq-time" : 200,
      "filter-hz" : [150, 5500],

      "record" : {
        "path" : "/mnt/ramdisk/data",
        "prefix" : "dududu-",
        "file-time-ms-limit" : [1500, 60000],
        "limit-size-kb" : 1900,
        "tail-ms" : 100,
        "timeout-ms" : 6000,
        "opus-bitrate" : 23000
      },

      "record-iq" : {
        "enable" : 0,
        "pre" : 48000,
        "post" : 48000,
        "path" : "/mnt/ramdisk/iqdata",
        "prefix" : "debug-iq-",
        "timeout-ms" : 6000
      }
    }
  ]
}
словари есть?
Ну как видишь, вышеприведённое успешно парситца.
...
Рейтинг: 0 / 0
Просто Трёп / Написал парсер JSON приличный за пару вечеров.
    #628040
Псина
Скрыть профиль Поместить в игнор-лист
Участник
[заблокирован]
Артефакт  24.11.2023, 19:20
[игнорируется]
пашэ просирает жизнь на никому не нужный радиогугл
еслиб еще ии прикрутил туду сюда
хоть бы скилы прокачал
а так чушь полная
Так я прокачал дохуя пока из сырого IQ звук в OPUS закодированный хуярил.
Ты штож думал, я запустил готовую либу какую-то бугага.
...
Рейтинг: 0 / 0
Просто Трёп / Написал парсер JSON приличный за пару вечеров.
    #628080
Псина
Скрыть профиль Поместить в игнор-лист
Участник
[заблокирован]
Артефакт  24.11.2023, 19:36
[игнорируется]
либу использовать для скилов полезнее
изобретать велосипед это тупик
Да нихуя. Скиллов в чём, в умении юзать либу?
...
Рейтинг: 0 / 0
Просто Трёп / Написал парсер JSON приличный за пару вечеров.
    #628112
Псина
Скрыть профиль Поместить в игнор-лист
Участник
[заблокирован]
Артефакт  24.11.2023, 19:43
[игнорируется]
даже на собеседе спросят что использовал
скажешь самопал и все охуеют чтоле
кучу времени убил, а результат пшик - только форум засрал
Не, мир не так устроен нихуя.
Я работаю в области реальной инженерии, когда создают что-то новое, а не в банках и прочих базоёпно-клепательных хуйнях.
У нас как раз ценится, в нашем мирке, что человек может разобраться до наносекунд и байтиков как там пакет в сетевухе живёт.
...
Рейтинг: 0 / 0
Просто Трёп / Написал парсер JSON приличный за пару вечеров.
    #628113
Псина
Скрыть профиль Поместить в игнор-лист
Участник
[заблокирован]
s62  24.11.2023, 19:47
[игнорируется]
Сильтровая Мирево-Плоскостная Прала  24.11.2023, 18:51
[игнорируется]
Раньше думал, что это ебать как сложно.
На деле задача свелась к двум этапам
1. Превратить JSON в поток событий "встретил начало строки", "встретил двоеточие", "встретил начало списка" (скобка квадратная) и т.п.
2. Ловилка этих событий, формирующая распарсенный объект.

Парсилка получилась слегка тупая, например экранирование в строках она не поймёт, ну и хуй с ним.
Нормальное дело по-моему. А что с некорректным JSON-ом? Просто прекращает парсинг?

На каком языке писал? Си++ или что-то скриптовое?
C++ чистейший, причём кода не так много, строк наверное 200 в сумме или 300, хз.
Некорректный JSON наверное вызовет сегфолт и отвал жопы!
Главное не пробовать.
Я думаю моя парсилка не пройдёт никуя нормальный набор тестов на сертифицированный парсер.
Но мне только конфиги мои парсить.
...
Рейтинг: 1 / 0
Нравится: s62
Просто Трёп / Написал парсер JSON приличный за пару вечеров.
    #628123
Псина
Скрыть профиль Поместить в игнор-лист
Участник
[заблокирован]
JSON, сцуко, это всё-таки самых охуенный формат описания структур данных текстом.
Потому что имеет тот минимальный набор фич, который часто нужен и ничего лишнего.
YAML меня дико бесит из-за сраных отступов.
JSON идеален - есть всё что надо:
- словари
- списки со строгим порядком
- строки
- числа

Всё, хуле ещё надо.
Главное, что вложенность может быть любой глубины и в значение ключа можно спрятать любой объект, что очень часто надо и является достаточно естественной потребностью.
...
Рейтинг: 1 / 0
Нравится: IT-Клоп
Просто Трёп / Написал парсер JSON приличный за пару вечеров.
    #628125
Псина
Скрыть профиль Поместить в игнор-лист
Участник
[заблокирован]
Павел Мамкарёв  24.11.2023, 20:12
[игнорируется]
Сильтровая Мирево-Плоскостная Прала  24.11.2023, 18:51
[игнорируется]
Парсилка получилась слегка тупая, например экранирование в строках она не поймёт, ну и хуй с ним.
Ну, чуть что сложнее, сразу хуй забиваешь. Типа уже влом. Парсилка json без таких вещей это как автомобиль без двух колес.
Задачу решает, имеет какой-никакой законченный компилируемый вид и интерфейс, на практике работает - заебись. На конкурс лучших парсилок и не собирался.
...
Рейтинг: 0 / 0
Просто Трёп / Написал парсер JSON приличный за пару вечеров.
    #628130
Псина
Скрыть профиль Поместить в игнор-лист
Участник
[заблокирован]
Самое охуенное - реализовано как пара .h файлов, заинклудил куда надо и у тебя парсится джисон сцуко.
Всё, больше никуя не надо.
Если моя софтина будет падать на каких-то JSON, я уже буду разбираться по мере сил.
Пытаться сделать сразу идеально - это не профессионально, профессионалы выдают решение в срок, а потом дорабатывают.
Ясно же что идеальная тачка это Mercedes-Maybach GLS - большая, пиздатая, красивая, по говну ездит, можно в салон положить много мешков картофеля, есть кондей и клёвый звук и подсветочка, но стоит 40 лямов, поэтому все ездят на солярисе.
В инженерном деле важен вопрос ресурсов и сроков!
...
Рейтинг: 0 / 0
Просто Трёп / Написал парсер JSON приличный за пару вечеров.
    #628136
Псина
Скрыть профиль Поместить в игнор-лист
Участник
[заблокирован]
W  24.11.2023, 20:19
[игнорируется]
Сильтровая Мирево-Плоскостная Прала  24.11.2023, 20:13
[игнорируется]
JSON идеален - есть всё что надо
нет комментариев
как будешь объединять словари, если конфиг по нескольким файлам?
подчеркну еще раз - "словари", не "объекты"
Комментариев нет, это дико бесит ага.
Приходится создавать ключ "commentazaza" все время
Про словари и обьединение не понял
...
Рейтинг: 0 / 0
Просто Трёп / Написал парсер JSON приличный за пару вечеров.
    #628151
Псина
Скрыть профиль Поместить в игнор-лист
Участник
[заблокирован]
Дед-Папыхтет  24.11.2023, 20:28
[игнорируется]
Да бл легаси лопатить говно это вам не с нуля хуйню запилить. Не против ничего имею и завидую тем у кого подобные задачи - джейсон распарсить, компрессию картинки или звука ебануть библиотеку написать ))))
Понимаем, за это вам и платят 100500 тыр в сек.
...
Рейтинг: 0 / 0
Просто Трёп / Написал парсер JSON приличный за пару вечеров.
    #628189
Псина
Скрыть профиль Поместить в игнор-лист
Участник
[заблокирован]
W  24.11.2023, 20:40
[игнорируется]
Сильтровая Мирево-Плоскостная Прала  24.11.2023, 20:23
[игнорируется]
W  24.11.2023, 20:19
[игнорируется]
Сильтровая Мирево-Плоскостная Прала  24.11.2023, 20:13
[игнорируется]
JSON идеален - есть всё что надо
нет комментариев
как будешь объединять словари, если конфиг по нескольким файлам?
подчеркну еще раз - "словари", не "объекты"
Комментариев нет, это дико бесит ага.
Приходится создавать ключ "commentazaza" все время
Про словари и обьединение не понял
tanki.json
Код: JSON
1.
2.
3.
4.
5.
6.
{
   settings1: {
      key1: value1,
      key2: value2
   }
}
tanki.env1.json
Код: JSON
1.
2.
3.
4.
5.
6.
{
   settings1: {
      key1: value1,
      key2: value21
   }
}
tanki.env2.json
Код: JSON
1.
2.
3.
4.
5.
6.
7.
{
   settings1: {
      key1: value1,
      key2: value22,
      key3: value32,
   }
}
и на выходе, условно:

так
Код: C++
1.
2.
3.
4.
class settings1
{
    Dict<string, string> Items;
}
или так
Код: C++
1.
2.
3.
4.
5.
6.
class settings1
{
    string key1;
    string key2;
    // string key3; -- этого нет!!!
}
что там в итоге будет?
Господуля, есть только 1 JSON файл. Их слияния ли объединения - уже творческий вопрос, решаемый в нужном месте как надо.
Обычно никак не решаемый. Есть только 1 JSON, остальные никого не волнуют.
...
Рейтинг: 0 / 0
Просто Трёп / Написал парсер JSON приличный за пару вечеров.
    #628221
Псина
Скрыть профиль Поместить в игнор-лист
Участник
[заблокирован]
W  24.11.2023, 21:02
[игнорируется]
Сильтровая Мирево-Плоскостная Прала  24.11.2023, 20:58
[игнорируется]
W  24.11.2023, 20:40
[игнорируется]
Сильтровая Мирево-Плоскостная Прала  24.11.2023, 20:23
[игнорируется]
W  24.11.2023, 20:19
[игнорируется]
...
Комментариев нет, это дико бесит ага.
Приходится создавать ключ "commentazaza" все время
Про словари и обьединение не понял
tanki.json
Код: JSON
1.
2.
3.
4.
5.
6.
{
   settings1: {
      key1: value1,
      key2: value2
   }
}
tanki.env1.json
Код: JSON
1.
2.
3.
4.
5.
6.
{
   settings1: {
      key1: value1,
      key2: value21
   }
}
tanki.env2.json
Код: JSON
1.
2.
3.
4.
5.
6.
7.
{
   settings1: {
      key1: value1,
      key2: value22,
      key3: value32,
   }
}
и на выходе, условно:

так
Код: C++
1.
2.
3.
4.
class settings1
{
    Dict<string, string> Items;
}
или так
Код: C++
1.
2.
3.
4.
5.
6.
class settings1
{
    string key1;
    string key2;
    // string key3; -- этого нет!!!
}
что там в итоге будет?
Господуля, есть только 1 JSON файл. Их слияния ли объединения - уже творческий вопрос, решаемый в нужном месте как надо.
Обычно никак не решаемый. Есть только 1 JSON, остальные никого не волнуют.
то есть ты решил только часть задачи. даже для конфига этого мало
Почему мало, конфиг - это только 1 файл.
У тебя типа монгослойный конфиг?
Ну это можно порешать уже в отдельном коде комбинирования.
...
Рейтинг: 0 / 1
Не нравится: a.v.z
Просто Трёп / Написал парсер JSON приличный за пару вечеров.
    #628223
Псина
Скрыть профиль Поместить в игнор-лист
Участник
[заблокирован]
RonibTheGreat2!  24.11.2023, 21:03
[игнорируется]
Сильтровая Мирево-Плоскостная Прала [игнорируется] 

изобрел велосипед. Уже давно есть хорошая библиотека от гугля которая все это делает. Оттестировано куча примеров к использованию.

https://mvnrepository.com/artifact/com.google.code.gson/gson
Позырь сколько на гитхабе перспективных проектов парсилок JSON.
Если б всех устраивал гугл, наверное такой свистопляски бы не было.
Там даже битвы на скорость парсинга проводят.
...
Рейтинг: 0 / 0
Просто Трёп / Написал парсер JSON приличный за пару вечеров.
    #628256
Псина
Скрыть профиль Поместить в игнор-лист
Участник
[заблокирован]
W  24.11.2023, 21:38
[игнорируется]
Сильтровая Мирево-Плоскостная Прала  24.11.2023, 21:21
[игнорируется]
Ну это можно порешать уже в отдельном коде комбинирования
можно
Ну я отвечаю только за трансляцию 1 JSON file -> 1 object
Дальше получаешь свои объекты и делаешь с ними чо хочешь.
...
Рейтинг: 0 / 0
Просто Трёп / Написал парсер JSON приличный за пару вечеров.
    #628346
Псина
Скрыть профиль Поместить в игнор-лист
Участник
[заблокирован]
Сытое Брюхо к Питону глухо  24.11.2023, 22:29
[игнорируется]
не решает в общем смысле
И насрать, мне в частном надо, в моём. Шоб работало здесь и сейчас.
Врядли мой вышеприведённый пример моего конфига от общепринятого джисона отличается как-то так сильно, что хипсторы поперхнутся.
...
Рейтинг: 0 / 0
Просто Трёп / Написал парсер JSON приличный за пару вечеров.
    #628350
Псина
Скрыть профиль Поместить в игнор-лист
Участник
[заблокирован]
Бля, в мире идёт целая война парсеров json.
Каждые полгода новую революционную жопу пишут в этом поприще.
Это в вашем саранске тишь да гладь, а в прогрессивном мире трясут и шатают!


https://github.com/stephenberry/glaze
https://github.com/simdjson/simdjson
https://github.com/Tencent/rapidjson
...
Рейтинг: 0 / 0
Просто Трёп / Написал парсер JSON приличный за пару вечеров.
    #628388
Псина
Скрыть профиль Поместить в игнор-лист
Участник
[заблокирован]
Я вот не понимаю какого хуя в каждую жопу пихают BISON + YACC.
Элементарный парсер пишется тупо руками сравнением символов.
Конечный автомат написать не сложный можно легко.
А пока инструкции к этим BISON + YACC напишешь, так война и мир какая-то на ровном месте.
...
Рейтинг: 0 / 0
Просто Трёп / Написал парсер JSON приличный за пару вечеров.
    #628399
Псина
Скрыть профиль Поместить в игнор-лист
Участник
[заблокирован]
Шоколадный01  24.11.2023, 23:26
[игнорируется]
Сильтровая Мирево-Плоскостная Прала  24.11.2023, 18:51
[игнорируется]
Раньше думал, что это ебать как сложно.
На деле задача свелась к двум этапам
1. Превратить JSON в поток событий "встретил начало строки", "встретил двоеточие", "встретил начало списка" (скобка квадратная) и т.п.
2. Ловилка этих событий, формирующая распарсенный объект.

Парсилка получилась слегка тупая, например экранирование в строках она не поймёт, ну и хуй с ним.
ты становишса валентином без уважения . терь напишы жсон - хмл конвертор и будеш реальНый валя конвертило[:biggrin2]
Я чо совсем чтоли.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Просто Трёп [закрыт для гостей] / Написал парсер JSON приличный за пару вечеров., Поиск: Искать сообщения, созданные автором: Псина  
Читали тему (1): Анонимы (1)
Игнорируют тему (1): Гарыныч
Читали форум (89): Анонимы (81), Кусь, Артефакт 1 мин., Т-Миронов 1 мин., anonymous 4 мин., паразит 4 мин., sergey11 5 мин., Дед-Папыхтет 6 мин., alexker 8 мин.
Пользователи онлайн (134): Анонимы (115), Сталкер, Yandex Bot, Bing Bot, prostozevs, Кусь, anonymous, Antonariy, Артефакт 1 мин., Т-Миронов 1 мин., жЫвоглот 3 мин., паразит 3 мин., битый 4 мин., a.v.z 5 мин., sergey11 5 мин., Дед-Папыхтет 6 мин., IT-Клоп 6 мин., Брюквенные годы 8 мин., alexker 8 мин., Vaska Balboa 9 мин.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]