Mongo DB对象Id使用JSON序列化程序进行反序列化

var docToJson = doc.ToJson(); story Featured = JsonConvert.DeserializeObject(docToJson); public class story { [JsonProperty("_id"), JsonConverter(typeof(ObjectIdConverter))] public ObjectId Id { get; set; } .... public class ObjectIdConverter : JsonConverter { public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { serializer.Serialize(writer, value.ToString()); } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { JToken token = JToken.Load(reader); return new ObjectId(token.ToObject()); } public override bool CanConvert(Type objectType) { return (objectType == typeof(ObjectId)); } } } 

我被困了我已经尝试了六种方法,我仍然得到与json读者相同的错误,任何人的想法?

最后从SO *尝试过这个

JsonReaderexception

解析值时遇到意外的字符:O。路径’_id’,第1行,第10位。

JSON字符串如下所示:

 { "_id": ObjectId("5378f94a3513fa3374be7e20"), "cc": "GB", "userName": "xyz ", "userImage": "img/16.jpg", "createdDate": ISODate("2014-05-18T18:17:46.983Z"), "Headling": "Veniam, amet, incidunt veniam, ipsam nostrud natus exercitationem consectetur, eos dolorem. ", "subheading": "Veniam, amet, incidunt veniam, ipsam nostrud. " } 

您收到此错误是因为_id属性的值不符合JSON标准(请参阅JSON.org )。 JSON值必须是以下之一:

  • 一个字符串(以引号开头和结尾"
  • 一个号码
  • 一个对象(以花括号{}开头和结尾)
  • 一个数组(以方括号[]开头和结尾)
  • 关键字truefalsenull

ObjectId("5378f94a3513fa3374be7e20")似乎是一个无效的函数。 值ISODate("2014-05-18T18:17:46.983Z")具有相同的问题。 如果要使用JSON.net解析它,您将需要以某种方式更改您的JSON以满足标准。