2017/09/24

Delphi 自動化 JSON 格式相容性分析


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[
  JSONObject,
  JSONObject,
  ...
]
而 Delphi 產出的流程是這樣的:
第一筆是欄位名,接著從上至下取出資料,第二筆是下一個欄位,以此類推
用文字表示大概是:
JSONObject(JSONArray),
JSONObject(JSONArray),
JSONObject(JSONArray),
...
看出這兩種格式的本質差異了吧!


結論:
Delphi 內建的 JSON 工具大多是產出自家前端可以接收的格式,所以如果要給其它平台使用,勢必要「自行加工」產出。

【自行加工】這四個字看起來是個坑,卻因為 Delphi 的原始碼提供了很好的示範,實際要轉出給其它平台使用的 JSON 格式時,也不過是多了幾個步驟而已。

但那又是另一個故事了,我們下回待續。

沒有留言:

張貼留言