2009-11-24 35 views
1

我正在使用Google App Engine和python進行Web服務。我在Web服務中使用的一些模型(表格)中有幾個二進制數據字段,我想將這些數據同時呈現給請求它的計算機,所有字段。現在,問題是我不知道如何以另一臺計算機知道第一個數據結束和另一個開始的位置的方式寫出它。我一直在使用JSON處理所有不是二進制的東西,但afaik JSON不適用於二進制數據。那麼你如何解決這個問題?從Google DataStore打印幾個二進制數據字段?

您當然可以分離數據並將其放入其自己的模型中,然後將其引回到某個元數據模型中。這將允許您創建一個只打印其中一個項目的一個數據字段的單個頁面,但這是服務器和客戶端執行方式的優點。

另一個解決方案是放入某種分隔符,然後將數據分割。我想這會起作用,那就是你如何去做的,但不是像那樣做的標準化方式嗎?任何我可以使用的圖書館?

總之,我希望能夠做這樣的事情:

binaryDataField1: data data data ... 
binaryDataField2: data data data ... 

會利用您的JSON的投資將是簡單的二進制數據轉換的東西

回答

1

一種解決方案該json可以支持。例如,Base64編碼可能適合您。您可以像使用json中的普通字符串一樣處理BAse64編碼器的輸出。它看起來像Python有Base64支持built in,雖然我只在應用程序引擎上使用Java,所以我不能保證鏈接庫在沙箱中工作或不。

2

幾種簡單的選擇:

  • base64編碼您的數據 - 這意味着你仍然可以使用JSON。
  • 使用Protocol Buffers
  • 將每個字段的長度前綴固定爲4-或8-字節整數或數字字符串。