2011-09-26 60 views
1

我想通過TCP套接字傳輸一些數據庫數據。數據格式化爲JSON。json格式的Java限制

由於數據庫大小可能會增長,恐怕String對象的最大大小不足以用JSON格式存儲整個數據。

我在使用DataOutput函數writeUTF()傳輸數據時遇到了問題。

我該怎麼辦?也許將數據庫行轉換爲CSV並通過Internet逐行傳輸?或者我不需要擔心字符串限制,通過獲取字符串的字節,通過套接字傳輸它們並從目標字節重建字符串來解決writeUTF()問題?

回答

2

Java字符串可能非常長 - 您不太可能遇到String類型自身的問題。如果先將字符串轉換爲二進制,然後使用writeInt來寫入字節數,然後使用字節本身,這應該很好。 writeUTF的問題是它使用writeShort,所以它只能處理高達64K的數據。

+0

你的意思是如果我有一千行像'{「files」:[「name」:「name_of_fie」,「path」:「文件路徑」,「last_change」:「timestamp」,「parent_dir」 :「父文件夾」]}'我不會有任何問題,只需在套接字上傳輸拋出字節? – androidGR

+0

@androidGR:是的。如果你以天真的方式做它,它會在內存方面稍微低效(因爲你將最終得到字符串表示*和*內存中的二進制編碼表示,對於整個文本),但它應該是容易做到。如果內存成爲問題,您可能需要一次傳輸塊(您可能會使用'writeUTF'),然後在另一端使用'StringBuilder'重新組合。 –