我正在處理delphi 2012中的dropbox包裝。我遇到的問題是反序列化json響應。當我做了我的賬戶文件夾和文件列表的請求,我得到的是看起來像這樣的迴應:使用Delphi 2012嵌套的json對象反序列化
{
"hash": "some_hash",
"thumb_exists": false,
"bytes": 0,
"path": "/",
"is_dir": true,
"size": "0 bytes",
"root": "dropbox",
"contents":
[
{
"revision": 11,
"rev": "b074cbcbb",
"thumb_exists": false,
"bytes": 0,
"modified": "Mon, 23 Apr 2012 19:19:27 +0000",
"path": "/Apps",
"is_dir": true,
"icon": "folder",
"root": "dropbox",
"size": "0 bytes"
},
{
"revision": 142,
"rev": "8e074cbcbb",
"thumb_exists": false,
"bytes": 0,
"modified": "Wed, 09 May 2012 22:55:44 +0000",
"path": "/code",
"is_dir": true,
"icon": "folder",
"root": "dropbox",
"size": "0 bytes"
},
{
"revision": 7,
"rev": "7074cbcbb",
"thumb_exists": false,
"bytes": 246000,
"modified": "Mon, 23 Apr 2012 18:40:51 +0000",
"client_mtime": "Mon, 23 Apr 2012 18:40:52 +0000",
"path": "/Getting Started.pdf",
"is_dir": false,
"icon": "page_white_acrobat",
"root": "dropbox",
"mime_type": "application/pdf",
"size": "240.2 KB"
}
],
"icon": "folder"
}
我希望能夠解析使用TJSONUnMarshal對象,但事實證明,該TJSONUnMarshal預計JSON看起來像這個:
{
"type":"DropboxApiU.TFile",
"id":1,
"fields":
{
"hash": "some_hash",
"thumb_exists": false,
"bytes": 0,
"path": "/",
"is_dir": true,
"size": "0 bytes",
"root": "dropbox",
"contents":
[
{
"type":"DropboxApiU.TFile",
"id":1,
"fields":
{
"revision": 11,
"rev": "b074cbcbb",
"thumb_exists": false,
"bytes": 0,
"modified": "Mon, 23 Apr 2012 19:19:27 +0000",
"path": "/Apps",
"is_dir": true,
"icon": "folder",
"root": "dropbox",
"size": "0 bytes"
}
},
我已經看了this頁面,並認爲這可能是什麼我要找的,但它從來沒有真正進入如何使用TTypeObjectReverter(其我認爲是我需要使用的),我似乎無法在網上找到一個例子。
發生這種情況的最佳方法是什麼?我希望我可以寫一個TTypeObjectReverter或類似的東西,但我需要看到一個樣本能夠圍繞它來包裝我的頭。
編輯 下面是兩者的區別截圖。紅色不會在收件箱服務器的響應中發送,但解組器可以預期。
缺少第二個文件的結尾。無論如何,除了JSON文件將包括一些差異化工具的截圖也很好(這是週五,我懶得自己做:-) – TLama
@TLama我上傳了一個屏幕截圖,第二個是缺少因爲所有的差異都顯示在第一部分,我懶得在這個光榮的星期五重建整個請求的方式德爾福期待它:) – nick