Отговори на тема  [ 37 мнения ]  Отиди на страница 1, 2, 3  Следваща
JSON Parser 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 10:41 am
Мнения: 1657
Мнение JSON Parser
Дайте някой читав json parser за ембедед приложение....


Пон Юни 10, 2019 9:50 am
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 8:19 pm
Мнения: 4410
Местоположение: Stara Zagora
Мнение Re: JSON Parser
Преди време разглеждах доста варианти и никой не ми хареса много от това което намерих.
След това 10тина дни се борих да си сътворя нещо мое платформено независимо.

https://github.com/rafagafe/tiny-json от този взаимствах някои идеи.
това ползвах като идея за енкодер https://github.com/Austinpayne/emjson


Пон Юни 10, 2019 10:00 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Мар 13, 2006 12:59 pm
Мнения: 3855
Местоположение: Габрово
Мнение Re: JSON Parser
https://github.com/DaveGamble/cJSON
или
https://github.com/zserge/jsmn


Пон Юни 10, 2019 1:06 pm
Профил
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Съб Май 17, 2008 10:01 pm
Мнения: 238
Мнение Re: JSON Parser
идеята е да парсва и вложени json структури , понеже там е проблема


Пон Юни 10, 2019 2:55 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пон Мар 13, 2006 12:59 pm
Мнения: 3855
Местоположение: Габрово
Мнение Re: JSON Parser
Позабравил съм кой как работеше, но си е компромис между скорост и консумация на памет. Отделно подходи като DOM vs SAX-подобни API-та водят до разлика в интегрирането с останалия код. Така че ако трябва да се търси конкретен вариант е добре да дефинираме кой от двата достъпа търсиш, какви ресурси си готов да отделиш.
Ако има избор предпочитам да обърна json-а (или xml) към нещо по-ефективно - messagepack например. Много рядко някой му се налага да прави JSON на ръка примерно и да го зарежда директно на ембедед - имам предвид че или редактора е нещо умно и може да се конвертира там, или има някой (сървър?) по средата който може да прави конверсията. Един от случаите за които се сещам е човек с текстов редактор пишеше на SD карта текстов файл и тази карта се мушкаше директно в ембедед устройството.


Пон Юни 10, 2019 8:11 pm
Профил
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Съб Май 17, 2008 10:01 pm
Мнения: 238
Мнение Re: JSON Parser
Понякога се налага да се парсне този примерен json :

{ k1: " val1",
k2: " val2",
k3:{
k4: "val4",
k5: "val5"
}
}

В дадени ситуации даже k4 и к5 са с променливи имена, респективно и тяхните стойности. 8O


Пон Юни 10, 2019 11:27 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Нед Фев 16, 2014 2:36 pm
Мнения: 953
Мнение Re: JSON Parser
nikolovs написа:
{ k1: " val1",
k2: " val2",
k3:{
k4: "val4",
k5: "val5"
}
}


Това е JSON5 ( https://json5.org/ )

В класическия JSON имената на полетата също трябва да са в кавички.


Вто Юни 11, 2019 9:10 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 10:41 am
Мнения: 1657
Мнение Re: JSON Parser
DanielDimov написа:
nikolovs написа:
{ k1: " val1",
k2: " val2",
k3:{
k4: "val4",
k5: "val5"
}
}


Това е JSON5 ( https://json5.org/ )

В класическия JSON имената на полетата също трябва да са в кавички.


Не е 5, в кавички са:

Код:
{ "k1" : " val1",
"k2" : " val2",
"k3" :{
"k4" : "val4",
"k5" : "val5"
}
}


Вто Юни 11, 2019 6:35 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 5:52 pm
Мнения: 10356
Местоположение: Добрич
Мнение Re: JSON Parser
relsys написа:
Дайте някой читав json parser за ембедед приложение....


Дефинирай "читав" и дефинирай "ембедед" ;-)

Парсерите по принцип могат да правят две неща - да валидират входните данни дали отговарят на определени правила и/или да конвертират данните до друг, по-удобен формат. От голямо значение е средата в която работиш, дали имаш динамична памет, дали имаш абстракция за стрингове, за обекти и т.н. Тия неща варират много (ако изобщо ги има налични), съответно не всеки парсер би ти свършил работа.
Всъщност, ако имаш добър инструментариум самият парсер не е чак толкова сложен. Може и сам да си го напишеш или модифицираш някой готов. Ако гледаш готови, преценявай следните неща - първо как работи с паметта. Стандартно се ползва рекурсия, което за ембедед не е добра идея. Нямаш неограничен стек, а и не искаш да се омазва като парсваш малко по-шибани данни. Парсерът трябва да е нерекурсивен и да работи с динамична памет и като му свърши паметта да си излиза културно с грешка, а не да забива. А другият проблем като почнеш да работиш със структурирани данни е, че с времето се налага да работиш с все повече данни и колкото и да ти е била динамичната памет тя рано или късно се оказва недостатъчна. Затова по-добрите парсери вместо с указатели към данните работят с неща като стриймове или файлове. Това малко се отразява на парсването, тъй като не всички данни са ти налични, има значение как ги достъпваш и т.н.


Сря Юни 12, 2019 8:03 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 10:41 am
Мнения: 1657
Мнение Re: JSON Parser
Миро, за Cortex M3 иде реч.

Поради някаква причина, ползвам frozen.c/h. За създаване - няма грижи. При парсване обаче, има някакъв бъг в библиотеката и не парсва правилно - или въобще не парсва вложените json структури. Проблема е, че нямаше време да го напиша или да изследвам проблемите. Иначе, такава глупост като json, парсера дето съм го писал за датекския протокол с малко модификации ще го сдъвче и изплюе за норматив... Просто ми се искаше да сложа нещо готово и то да изплюе няколко прости стринга, пък аз да си продължа със задачата нататък... ама явно няма да е точно тъй...


Сря Юни 12, 2019 10:19 am
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 5:52 pm
Мнения: 10356
Местоположение: Добрич
Мнение Re: JSON Parser
relsys написа:
ползвам frozen.c/h


най-после му хвърлих едно око...
Изглежда прилично написан, не е моя стил, но е добър. С други думи нивото на руснака е добро и е малко вероятно кода да има груби или елементарни бъгове. Разбира се бъгове винаги може да има, но по-скоро като гледам това не е толкова парсер. Нямаш втори формат, по-скоро имаш инструменти как да генерираш и как да обхождаш и обработваш json.
Така че много ще зависи как точно използваш инструментите. Примерно като обхождаш ми изглежда че обхождаш на дадено ниво. Ако искаш да слезеш надолу по разклоненият според мен ще трябва промениш параметрите на функцията за итерация.


Чет Юни 13, 2019 10:04 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 10:41 am
Мнения: 1657
Мнение Re: JSON Parser
miro_atc написа:
relsys написа:
ползвам frozen.c/h


най-после му хвърлих едно око...
Изглежда прилично написан, не е моя стил, но е добър. С други думи нивото на руснака е добро и е малко вероятно кода да има груби или елементарни бъгове. Разбира се бъгове винаги може да има, но по-скоро като гледам това не е толкова парсер. Нямаш втори формат, по-скоро имаш инструменти как да генерираш и как да обхождаш и обработваш json.
Така че много ще зависи как точно използваш инструментите. Примерно като обхождаш ми изглежда че обхождаш на дадено ниво. Ако искаш да слезеш надолу по разклоненият според мен ще трябва промениш параметрите на функцията за итерация.


Приличен е да, но си има неговите подводни камъни. Не парсва примерно, ако в стринга има '.' (точка). Как и да е, с помощта на двама колеги (nikolovs и Мартин Пенев) работата стана. Има малко разлики и при ползване под windows, и при gcc.
Ако някой има нужда от някаква помощ с тая библиотека - да свирка.


Чет Юни 13, 2019 11:53 pm
Профил ICQ WWW
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Нед Фев 25, 2007 12:41 am
Мнения: 276
Местоположение: София
Мнение Re: JSON Parser
jsmn - това е тествано и работи до ден днешен, 5-6 години вече. Много компактно решение без да използва функции за динамично заделяне на памет.


Сря Юни 19, 2019 1:18 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Фев 26, 2006 5:52 pm
Мнения: 10356
Местоположение: Добрич
Мнение Re: JSON Parser
speedblue написа:
без да използва функции за динамично заделяне на памет.


Това е по-лошият вариант, защото когато не се ползва динамична памет се ползва рекурсия... Съответно правиш устройство с парсер, аз му подавам един готин файл и устройството казва бум! :D


Сря Юни 19, 2019 9:12 am
Профил
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Нед Фев 25, 2007 12:41 am
Мнения: 276
Местоположение: София
Мнение Re: JSON Parser
miro_atc написа:
speedblue написа:
без да използва функции за динамично заделяне на памет.

Това е по-лошият вариант, защото когато не се ползва динамична памет се ползва рекурсия... Съответно правиш устройство с парсер, аз му подавам един готин файл и устройството казва бум! :D

Няма как да каже БУМ, понеже си има лимит на токъните и ги реже :axe: отделно алгоритъма за откриване на грешки също не позволява БУМ [-X
Това работи наистина много много стабилно, даже няма случай да се е издънило, а външни клиенти докато се научат да подават правилни JSON-и бая са се чесали защо им връща грешка. Накрая се научават разбира се =D>

Този парсер си има своите предимства и ограничения, но не можеш да го забиеш, поне не съм виждал такъв случай.


Пон Юни 24, 2019 12:19 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 37 мнения ]  Отиди на страница 1, 2, 3  Следваща

Кой е на линия

Потребители разглеждащи този форум: Stoimen и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни