Json.NET反序列化MongoObjectId给出错误结果我正在使用官方的MongoC#驱动程序和RestSharpwithJson。NET调用RestApi进行序列化/反序列化。假设我有一个如下的Person类,我想POST&GET:;set;}}我创建了一个新的Person对象:varperson=newPerson{Id=ObjectId.GenerateId(),Name='JoeBloggs'};发布它,在服务器上我看到以下内容是正确的:{_id:52498b56904ee108c99fbe88,name:'JoeBloggs'}问题是当我执行GET时,我在客户端上获得的ObjectId是{0000000000000...},即不是我预期的{5249.....}。原始响应显示了正确的值,但是一旦我反序列化它,我就失去了它。ObjectIdConverter代码是:}publicoverrideobjectReadJson(JsonReaderreader,TypeobjectexistingValue,JsonSerializerserializer){varobjectId=(ObjectId)existingValue;//此时existingValue为{000...}returnobjectId;}publicoverrideboolCanConvert(TypeobjectType){return(objectType==typeof(ObjectId));}}任何帮助将不胜感激。您错误地实现了Converter的ReadJson方法。existingValue参数不会为您提供从JSON读取的反序列化值,它为您提供要替换的对象的现有值。在大多数情况下,这将为null或空。您需要做的是使用读取器从JSON中获取值,根据需要进行转换,然后返回转换后的值。假设您的ObjectId类有一个接受十六进制字符串的构造函数,这里是如何实现ReadJson方法:以上是C#学习教程:Json.NETdeserializationofMongoObjectIdgiveswrongresults它很有用,需要进一步了解C#学习教程,希望大家多多关注——返回新的ObjectId(token.ToObject());}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
