0

我希望对使用 Lazarus\Freepascal JSON 解析有一点“简单”演示\解释。我在这里问了一个问题,但所有的回复都是“阅读这个”,没有一个真的能帮助我掌握,因为这些例子有点太深入了,我正在寻找一个非常简单的例子来帮助我理解如何有用。

简而言之,我的程序以 4096 字节的块读取一个无类型的二进制文件。然后将原始数据转换为 ASCII 并存储在字符串中。然后,它通过变量寻找某些模式,结果证明,这些模式是 JSON 数据结构。我目前已经使用 Pos 和 ExtractANSIString 等对解析进行了艰难的编码。但我已经了解到 Lazarus 和 FPC 有 JSON 库,即 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

...

4

1 回答 1

1

请参阅parsedemo.pp,特别是 parsestring。只需修改doparse例程以从 j:TJSonData 对象中提取您需要的任何信息。

simpledemo.pp演示了如何剖析jsondata 对象。

然后阅读src/README.txt文件。它似乎暗示了 jsonobject 的一系列属性,这些属性允许按名称获取字段。这仅适用于结构 json 对象,如数组和对象。

我确实同意对此进行演示将是一件好事。如果你成功了,请提交给mantis。

免责声明:我与 json 包无关,我快速浏览了(诚然 2.7.1)源代码。

于 2012-09-29T09:30:36.667 回答