Гибкий «протокол» сериализации/десериализации, в котором можно опускать имя свойства?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Гибкий «протокол» сериализации/десериализации, в котором можно опускать имя свойства?

Сообщение Anonymous »

Я хотел бы уменьшить ответ json для большого вызова API.
Я знаю, что для этого можно использовать MessagePack. Но есть один недостаток, с которым я бы предпочел не иметь дело.
В большинстве моих случаев использования половина (+) данных — это имя ключа, которое повторяется для каждого свойства.
/>Итак, мне было интересно, существует ли «протокол» сериализации/десериализации, который может опускать имя свойства, и может ли он лучше сжимать данные в виде события! В идеале на C#.
Может быть, предоставив контекст/схему самого ответа, чтобы его можно было более легко и гибко анализировать на клиенте?
У меня есть фиктивный пример, который представляет собой вызов API, который возвращает 100 000 автомобилей и ~425 000 колес, и он вдохновлен спецификацией OpenAPI. Проверьте свойство «data» в формате JSON ниже.
//C# Class
public class Car
{
public int Year { get; set; }
public string Model { get; set; }
public List Wheels { get; set; }
}

public class Wheel
{
public double Diameter { get; set;}
public string TireSize { get; set; }
public string BoltPattern { get; set; }
}

//here is the fictive/wanted response that i would like to received and parse ... I've inspire the json response based on OpenAPI spec, but... could be anything!
{
"responseDataType": {//Property always there to tell that type is under the "data" property
"type": "array",
"items": {
"$ref": "#/schemas/Car"
}
},
"schemas": {//Template/type of the "data" property
"Car": {
"type": "object",
"properties": {
"year": {
"type": "integer",
},
"model": {
"type": "string",
},
"wheels": {
"type": "array",
"items": {
"$ref": "#/schemas/Wheel"
},
}
},
},
"Wheel": {
"type": "object",
"properties": {
"diameter": {
"type": "number",
},
"tireSize": {
"type": "string",
},
"boltPattern": {
"type": "string",
}
},
}
}
"data":[
{99 998 more rows...},
//As you can see the key are not repeated.
//But Deserializer would be parsing according to the provided "schemas"/"responseDataType".
//Could also be not indented to save more KB, zipped?
{
2000,
"Toyota",
[
{16,"275/40r16","4x100"},
{16,"275/40r16","4x100"},
{16,"275/40r16","4x100"},
{16,"275/40r16","4x100"}
]
},
{
2005,
"Jeep",
[
{17,"33x12.5","5x127"},
{17,"33x12.5","5x127"},
{17,"33x12.5","5x127"},
{17,"33x12.5","5x127"},
{17,"33x12.5","5x127"}
]
},
{...99 998 more rows}
]
}


Подробнее здесь: https://stackoverflow.com/questions/793 ... perty-name
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Гибкий «протокол» сериализации/десериализации, в котором можно опускать имя свойства?
    Anonymous » » в форуме C#
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Различные имена свойства JSON во время сериализации и десериализации.
    Anonymous » » в форуме JAVA
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Иметь другое название свойства для десериализации и сериализации с использованием Newtonsoft [Duplicate]
    Anonymous » » в форуме C#
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Следует ли включать или опускать фигурные скобки для однострочных операторов в циклах while и if?
    Anonymous » » в форуме JAVA
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Протокол MODBUSTCP в протокол Ethernetip C#
    Anonymous » » в форуме C#
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»