Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何实现自定义JsonConverter.NET来序列化和反序列化firestore的对象_C#_Serialization_Json.net_Google Cloud Firestore_Json Deserialization - Fatal编程技术网

C# 如何实现自定义JsonConverter.NET来序列化和反序列化firestore的对象

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

我正在尝试为具有嵌套对象的对象创建自定义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 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"
                                }
                            }
                        }
                    }
                ]
            }
        }
    }