Страницы

Поиск по вопросам

суббота, 28 декабря 2019 г.

Json-парсер для Delphi

#json #delphi #синтаксический_анализ


Чем парсить Json? Есть какие нибудь нормальные и легкие в освоении парсеры Json?    


Ответы

Ответ 1



Все ведь на официальном сайте JSONа перечислены: JSON delphi library Delphi Web Utils json-superobject tiny-json

Ответ 2



uses Data.DBXJSON //.. var JSONObject: TJSONObject; begin JSONObject := TJSONObject.ParseJSONValue('{"name","value"}') as TJSONObject; ShowMessage(JSONObject.Get('name').JsonValue.Value) но не хочет парсить данные типа {123:"value"} написал такой "патч": class function TJSONObject.ParsePair(const Br: TJSONByteReader; const Parent: TJSONObject): Integer; var Pair: TJSONPair; CommaPos: Integer; begin Pair := TJSONPair.Create; Parent.AddDescendant(Pair); // CommaPos := ParseString(Br, Pair); ///////////////////////////////////////// { Заміна щоб бачило рядки типу {33:33} ConsumeWhitespaces(Br); if Br.PeekByte in [Ord('0')..Ord('9')] then CommaPos := ParseNumber(Br, Pair) else CommaPos := ParseString(Br, Pair); {/} if CommaPos > 0 then begin ConsumeWhitespaces(Br); if Br.Empty then Exit(-Br.Offset); if Br.PeekByte <> Ord(':') then Exit(-Br.Offset); Br.ConsumeByte; ConsumeWhitespaces(Br); CommaPos := ParseValue(Br, Pair); end; Result := CommaPos; end; Просто замени соответствующую функу (можешь сохранить в другом файле)

Ответ 3



Начиная с Delphi 2010 присутствует встроенная поддержка json (модуль Data.DBXJSON) в рамках технологии dbExpress, также в дополнение к уже перечисленным библиотекам, появилась еще одна от Andreas Hausladen, автора IDE Tools для Delphi: Json Data Objects, поддерживаются версии начиная с 2009.

Ответ 4



Результата стоило бы стыдиться, но меня не устроил ни один из имевшихся вариантов, поэтому я написал свой: https://github.com/badunius/myJSON UPD: Не устроила прежде всего громоздкость, требующая для работы со вложенностью либо заводить орду переменных, либо выстраивать чересчур нечитаемые цепочки. Приведение типов хоть и прогрессивно, но тоже читабельности не добавляет. Я привык работать с JSON в JS, поэтому мне была важна максимальная сходность синтаксиса. Ах да, и главным требованием, конечно, была совместимость с Delphi 7, потому что я всё ещё ею пользуюсь.

Ответ 5



В последних версиях Delphi, есть встроенная библиотека JSON

Комментариев нет:

Отправить комментарий