Delphi 自動化產出的 JSON 格式一直被詬病著,因為它的 JSON 格式在起始處一定會強制寫入「Meta Data」,它看起來像是:
"table":[["EmpNo",6,0,0,0,4,0,0,false,false,0,false,false], ["LastName",1,1,0,20,21,0,0,false,false,0,false,false]]這般的格式,所以導致其它平台要和它相容很困難。
然而,你以為只是單純的「多了一隻怪手」的問題嗎?
不,這只是相容困難點的【其中之一】!
真正的問題在:
產出格式的根本不同!
就以範例表格說明
在和其它平台進行溝通時,它們的封包結構是這樣產出的:
每一筆都是先由左至右,再從上至下依次取出 |
JSONArray[而 Delphi 產出的流程是這樣的:
JSONObject,
JSONObject,
...
]
第一筆是欄位名,接著從上至下取出資料,第二筆是下一個欄位,以此類推 |
JSONObject(JSONArray),看出這兩種格式的本質差異了吧!
JSONObject(JSONArray),
JSONObject(JSONArray),
...
結論:
Delphi 內建的 JSON 工具大多是產出自家前端可以接收的格式,所以如果要給其它平台使用,勢必要「自行加工」產出。
【自行加工】這四個字看起來是個坑,卻因為 Delphi 的原始碼提供了很好的示範,實際要轉出給其它平台使用的 JSON 格式時,也不過是多了幾個步驟而已。
但那又是另一個故事了,我們下回待續。
沒有留言:
張貼留言