Использование JSON-библиотек Freepascal\Lazarus

Я надеюсь на небольшую демонстрацию/объяснение для "простаков" по использованию разбора Lazarus\Freepascal JSON. Я задал вопрос здесь, но все ответы " прочитайте это», и ни один из них на самом деле не помогает мне понять, потому что примеры слишком подробные, и я ищу очень простой пример, который поможет мне понять, как это работает.

Вкратце, моя программа читает нетипизированный двоичный файл кусками по 4096 байт. Затем необработанные данные преобразуются в ASCII и сохраняются в строке. Затем он проходит через переменную в поисках определенных шаблонов, которые, как оказалось, являются структурами данных JSON. В настоящее время я кодировал синтаксический анализ с помощью Pos и ​​ExtractANSIString и т. д. Но с тех пор я узнал, что существуют библиотеки JSON для Lazarus и FPC, а именно fcl-json, fpjson, jsonparser, jsonscanner и т. д.

https://bitbucket.org/reiniero/fpctwit/src http://fossies.org/ unix/misc/fpcbuild-2.6.0.tar.gz:a/fpcbuild-2.6.0/fpcsrc/packages/fcl-json/src/ http://svn.freepascal.org/cgi-bin/viewvc.cgi/trunk/packages/fcl-json/examples/

Тем не менее, я до сих пор не могу понять, КАК я читаю свою строковую переменную и анализирую ее для данных JSON, а затем получаю доступ к этим структурам JSON.

Может ли кто-нибудь дать мне очень простой пример, чтобы помочь мне двигаться?

Мой код до сих пор (без JSON) выглядит примерно так:

try
  SourceFile.Position := 0;
  while TotalBytesRead < SourceFile.Size do
    begin 
      BytesRead := SourceFile.Read(Buffer,sizeof(Buffer));
      inc(TotalBytesRead, BytesRead);      
      StringContent := StripNonAsciiExceptCRLF(Buffer);    // A custom function to strip out binary garbage leaving just ASCII readable text     
      if Pos('MySearchValue', StringContent) > 0 then
          begin          
            // Do the parsing. This is where I need to do the JSON stuff

...


person Gizmo_the_Great    schedule 28.09.2012    source источник


Ответы (1)


См. parsedemo.pp, особенно parsestring. Просто измените подпрограмму doparse, чтобы извлечь любую необходимую информацию из объекта j:TJSonData.

simpledem.pp демонстрирует, как анализировать объект jsondata.

Затем прочитайте файл src/README.txt. Вроде намекает на кучу свойств jsonobject, позволяющих получать поля по имени. Это работает только для структур json-объектов, таких как массив и объект.

Я согласен, что демонстрация этого была бы хорошей вещью. Если вы сделаете это, отправьте его богомолу.

Отказ от ответственности: я не имею ничего общего с пакетом json, я получил это из беглого взгляда на источник (по общему признанию 2.7.1).

person Marco van de Voort    schedule 29.09.2012