У меня следующая проблема: я пытаюсь сериализовать объект (object1) в Json, используя пакет Newtonsoft.Json.Мне нужно иметь возможность отправить его на сервер.Проблема в том, что object1 имеет несколько ссылочных объектов, некоторые из которых должны быть созданы вместе с object1, но один из них «только для чтения» на сервере, поэтому он должен быть отправлен как отношение.
Я использую string json = JsonConvert.SerializeObject
Пример:
<code>
[DataContract]
public class Object1
{
// Simple Properties
[JsonProperty(PropertyName = "ext_ref", Order = 1)]
public string ExtRef { get; set; }
[JsonProperty(PropertyName = "external_comment", Order = 1)]
public string ExternalComment { get; set; }
[JsonProperty(PropertyName = "internal_comment", Order = 1)]
public string InternalComment { get; set; }
[JsonProperty(PropertyName = "object2")]
public Object2 Object2 { get; set; }
[JsonProperty(PropertyName = "object3")]
public Object3 Object3 { get; set; }
}
</code>
Вот так я и получаю.Это подходит для большинства объектов, но не для всех:
{
"data": {
"attributes": {
"ext_ref": "2573421",
"external_comment": "Ext Comment",
"internal_comment": "Internal comment",
"object2": {
"data": {
"attributes": {
"xx":"XX",
"yy":"YY"
},
"id": "1",
"type": "object2s"
},
"object3": {
"data": {
"attributes": {
"xx":"XX",
"yy":"YY"
},
"id": "1",
"type": "object3s"
}
},
},
"type": "object1"
}
Поскольку объект2 является «особым случаем», где сервер может воспринимать его только как ссылку, он должен выглядеть следующим образомэто:
{
"data": {
"attributes":{
"ext_ref": "2573421",
"external_comment": "Ext Comment",
"internal_comment": "Internal comment",
"object3": {
"data": {
"attributes": {
"xx":"XX",
"yy":"YY"
},
"id": "1",
"type": "object3s"
}
},
"type": "object1",
"relationships":{
"object2": {
"data": {
"id": "1",
"type": "object2s"
}
}
}
}
Теперь мой вопрос таков: есть ли простой способ сделать это?
Я пробовал следующее: Использование атрибута Relationship из JsonApiSerializer Изменение настроек JsonProperty для свойства object2.id Удаление object2.id
Не могу не подумать, что какой-то атрибут должен быть Iможно использовать для получения желаемого результата, но атм.Я застрял
[ПРАВИТЬ] Я добавил пример структуры объекта