Сериализация иерархии простых объектов C # в массив JSON - PullRequest
0 голосов
/ 17 декабря 2009

У меня есть структура класса в 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...
}

Я сериализировал это в JSON, используя DataContractJsonSerializer.

Однако, поскольку JSON включает все имена свойств, это создает много избыточного текста.

(Вы могли бы сказать, что gZip облегчает это, но я считаю, что gZip сжимает только часть вывода, например первые n килобайт, так что в этом случае это не поможет).

Так что я бы предпочел выплюнуть данные в формате массива Javascript, например:

[[1, "firstHotel"], [2, "secondHotel"], [3, "thirdHotel"], ...]

Есть ли способ настроить сериализацию JSON, чтобы сделать это таким образом? Или я должен просто написать свой собственный сериализатор?

Ответы [ 2 ]

0 голосов
/ 13 апреля 2011

Похоже, protobuf-net может обрабатывать аннотированные классы DataContract. Он использует двоичный формат Protocol Buffers, который меньше и быстрее для сериализации / десериализации, чем JSON. Вы все еще можете сохранять JSON в тех местах, где он должен быть удобочитаемым (отладка и т. Д.)

Даже со сжатием gzip формат буферов протокола будет меньше, чем JSON, хотя разница в размере зависит от того, как выглядят ваши данные.

0 голосов
/ 13 апреля 2011

То, что я пытался сделать, не обязательно, поскольку сжатие gzip позаботится обо всей ленте JSON, удалив любую избыточность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...