2012-09-28 81 views
0

我希望有一點使用Lazarus \ Freepascal JSON解析的「simpletons」demo \解釋。我已經提出了一個問題here,但所有的回覆都是「閱讀這篇文章」,而且他們都沒有真正幫助我掌握,因爲這些例子有點過於深入,我正在尋找一個非常簡單的例子來幫助我理解有用。使用Freepascal Lazarus JSON庫

簡而言之,我的程序以4096字節的塊讀取一個無類型的二進制文件。原始數據然後被轉換爲ASCII並存儲在一個字符串中。然後它通過查找某些模式的變量,結果是JSON數據結構。目前我使用的編碼POS和ExtractANSIString等,但I'vesince得知還有拉撒路& FPC,即FCL-JSON,fpjson,jsonparser,jsonscanner等

https://bitbucket.org/reiniero/fpctwit/src HTTP JSON庫解析硬盤的方式://fossies.org/unix/misc/fpcbuild-2.6.0.tar.gz:A/fpcbuild-2.6.0/fpcsrc /包/ 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 

...

回答

1

parsedemo.pp,特別parsestring。只需修改doparse例程以從j:TJSonData對象中提取所需的任何信息。

simpledemo.pp演示瞭如何檢測jsondata對象。

然後閱讀src/README.txt文件。它似乎暗示了jsonobject的一堆屬性,允許按名稱獲取字段。這隻適用於像數組和對象這樣的結構json對象。

我確實認爲演示會是一件好事。如果你做到了,請將它提交給螳螂。免責聲明:我與json軟件包沒有任何關係,我從上面快速瀏覽了(不可否認的是2.7.1)源代碼。

相關問題