2011-06-15 96 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的协议缓冲区