C# 如何实现自定义JsonConverter.NET来序列化和反序列化firestore的对象
我正在尝试为具有嵌套对象的对象创建自定义json转换器,以作为主体发送到Firestore REST API:C# 如何实现自定义JsonConverter.NET来序列化和反序列化firestore的对象,c#,serialization,json.net,google-cloud-firestore,json-deserialization,C#,Serialization,Json.net,Google Cloud Firestore,Json Deserialization,我正在尝试为具有嵌套对象的对象创建自定义json转换器,以作为主体发送到Firestore REST API: public class Channel { public string Name { get; private set; } public long OwnerId { get; private set; } public IEnumerable<Message> Messages { get; set; } public IEnumera
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; }
}
Firestore强制使用此结构,属性成为对象,类型作为键,值作为值(字符串变成stringValue,IEnumerable变成arrayValue和值,对象变成mapValue和字段…)
我应该为每个对象创建一个转换器,还是只为通道对象创建一个转换器?任何回答或帮助都将不胜感激,谢谢 恐怕这太宽了,不能让堆栈溢出。你必须试一试,当你被卡住时回到这里。我应该为每个对象创建一个转换器,还是只为通道对象创建一个转换器对这两种方法都可能奏效。就我个人而言,我可能会创建一个
StringConverter
和ArrayConverter
,等等。在您的数据模型中OwnerId
是一个长的
,但在JSON中它显然是一个字符串:“stringValue”:“id-1”
。这是一个错误还是有一些自定义的ID转换规则?您是否有将常规JSON转换为firestore JSON所需的规则列表?例如,嵌套的消息
获取一个“mapValue”
属性,但根对象通道
没有。
{
"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"
}
}
}
}
]
}
}
}