JSON: спецификация API против сериализации объекта с использованием NewtonSoft - PullRequest
0 голосов
/ 10 ноября 2019

Согласно https://jsonapi.org/format/

* Объект JSON ДОЛЖЕН находиться в корне каждого запроса и ответа JSON: API, содержащего данные. Этот объект определяет «верхний уровень» документа. Документ ДОЛЖЕН содержать хотя бы одного из следующих членов высшего уровня:

data : «первичные данные» документа

ошибки : anмассив объектов ошибок

мета : мета-объект, который содержит нестандартную мета-информацию. *

Таким образом, действительный документ JSON, рассматривающий эти мета, данные и элементы ошибокдолжен выглядеть (просто пример):

{
  "meta": {
    "uuid": "e77d8a4b-dc00-445c-8cf6-118704c5525b",
    "key": "key123",
    "api_version": "1.0"
  },
  "data": {
    "type": "agent",
    "attributes": {
      "uuid": "a4470f04-c6eb-45b2-9487-d1cecc869b5f",
      "name": "hostname",
      "operating_system": "Microsoft Windows 10 Pro (Microsoft Windows NT 6.2.9200.0)",
    }
  }
}

Использование C # и Newtonsoft.Json.SerializeObject для сериализации этого объекта:

public class Device : Meta
{
    public long Id { get; set; }
    public string Name { get; set; }
}

public class Meta
{
    public string key { get; set; }
    public string guid { get; set; }
    public string api_version { get; set; }
}

затем:

var device = new Device { Name = Environment.MachineName, key = "key123", guid = "41afe993-2629-40a2-98bb-4cbd4e5c5bb0",api_version = "1.0"};
var deviceJson = JsonConvert.SerializeObject(device, Formatting.Indented);

я получаю документ json:

{
  "id": 0,
  "name": "SOLMOB007",
  "Software": [],
  "key": "key123",
  "guid": "41afe993-2629-40a2-98bb-4cbd4e5c5bb0",
  "api_version": "1.0"
}

Можно ли мне объяснить, если мне нужно реализовать (данные, ошибки, обработка метаэлементов) в моих модельных классах или я могу поручить сериализатору добавить их при вызовесериализующий объект / конструктор?

спасибо большое!

Кристиан

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