2011-06-15 97 views
1

我有我轉換爲JSON的數據。我需要非常優化的存儲空間,但是當我查看JSON字符串時,存在大量浪費的空間。例如我的假單真正被轉換爲:減少用JSON存儲的數據的大小

"testField":false 

這似乎不是很多,但我有很多的數據,它是在一個真或假獲得的一個字節轉換爲東西15倍大的一個大問題。

有什麼我可以做的,以阻止這種巨大的空間浪費並優化數據存儲的方式。請注意,我並不需要它是JSON。我需要的只是將存儲在類中的數據轉換爲可以稍後轉換的字符串。

+0

-1這是通用的。給出/你的/數據的一些具體例子。不要只抱怨你選擇的格式。 – 2011-06-15 01:18:53

+1

這是我的數據的一個例子。不知道還能給我什麼。這是數據存儲在JSON中的方式。數據與標籤和單詞true或false一起存儲。它使用了很多空間。 – 2011-06-15 01:48:18

+0

如果它始終是相同的字段,爲什麼不返回一個像這樣的值:10000101011011(或者甚至更簡潔,一個字節[],其中每個字節表示8個布爾值 – 2011-06-15 01:51:42

回答

0

我想你可以改變testField成整數,並將其設置爲「0」。 這比「false」小。

+0

是的,這聽起來像是一種可能性。看起來好像很多空間被浪費了 – 2011-06-15 01:20:09

+0

我最喜歡你的想法。其實我把它改成了一個字符串並改了字段名,這樣可以節省很多空間,「TF」:「」 – 2011-06-15 02:20:11

1

退房MessagePack:http://msgpack.org/

+0

這看起來像是一種可能性,但任何人都在使用它?有類,包含類,包含數組。不知道msgpack可以通過序列化得到多深。 – 2011-06-15 01:19:36

+0

任何可以用JSON序列化的東西都可以用messagepack序列化。我不確定有多少人在使用它,但似乎有一個很多關於它的推文:http://twitter.com/#!/search/realtime/MessagePack%20OR%20msgpack – Craig 2011-06-15 01:41:41

0

testField是您的財產的名稱,不是?

如果您希望縮短一點,請使用較短的屬性名稱,但仍然只返回布爾值作爲值。我猜如果你不喜歡真/假,你可以確保返回0/1。

0

我會嘗試使用二進制格式(BSon),甚至更好,Google的協議緩衝區