我在C#中有一个类结构,类似于以下内容:
[DataContract]
class Data
{
[DataMember] public List<Hotel> Hotels { get; set; }
// etc...
}
[DataContract]
class Hotel
{
[DataMember] public int HotelID { get; set; }
[DataMember] public string HotelName { get; set; }
// etc...
}
我一直在使用'DataContractJsonSerializer'将其序列化为JSON。
但是,由于JSON包含所有属性名称,因此会产生大量冗余文本。
(你可能会说gZip减轻了这一点,但我相信gZip只压缩输出的一部分,比如前n千字节,所以在这种情况下,它并没有真正帮助。)
所以我更喜欢做的是以Javascript数组的格式吐出数据,如下所示:
[[1, "firstHotel"], [2, "secondHotel"], [3, "thirdHotel"], ...]
有没有办法自定义JSON序列化这样做?或者我应该手动编写自己的序列化程序?
答案 0 :(得分:0)
我尝试的是没有必要的,因为gzip压缩将处理整个JSON提要,删除任何冗余。
答案 1 :(得分:0)
看起来protobuf-net可以处理DataContract带注释的类。它使用二进制协议缓冲区格式,比JSON更小,更快速地序列化/反序列化。您仍然可以将JSON转储到您需要的地方,以便人类可读(调试等)
即使使用gzip压缩,协议缓冲区格式也会小于JSON,但大小的差异取决于数据的样子。