Я пытаюсь создать собственный конвертер json для объекта с вложенными объектами, чтобы отправить его как тело в REST API Firestore:
public class Channel
{
public string Name { get; private set; }
public long OwnerId { get; private set; }
public IEnumerable<Message> Messages { get; set; }
public IEnumerable<User> Users { get; set; }
}
public class User
{
public string UserId{ get; private set; }
public string Pseudonym { get; private set; }
}
public class Message
{
public long SenderUserId { get; private set; }
public string text { get; private set; }
public DateTime SentDate { get; private set; }
}
При сериализации структура json должна выглядеть следующим образом:
{
"OwnerId": {
"stringValue": "id-1"
},
"Name": {
"stringValue": "New Channel"
},
"Messages": {
"arrayValue": {
"values": [
{
"mapValue": {
"fields": {
"ConversationMessage": {
"stringValue": "Hello kev"
},
"SenderUserId": {
"stringValue": "id-1"
}
}
}
}
]
}
},
"Users": {
"arrayValue": {
"values": [
{
"mapValue": {
"fields": {
"UserId": {
"stringValue": "id-1"
},
"Pseudonym": {
"stringValue": "raven"
}
}
}
},
{
"mapValue": {
"fields": {
"UserId": {
"stringValue": "id-2"
},
"Pseudonym": {
"stringValue": "kev"
}
}
}
}
]
}
}
}
Firestore налагает эту структуру, свойство становится объектом с типом в качестве ключа и значением в качестве значения (строка становится stringValue, IEnumerable становится arrayValue со значениями, объект становится mapValue с полями ...)
Должен ли я создать конвертер для объекта или только один конвертер для объекта Channel? Любые ответы или помощь будут очень признательны, спасибо!