공식 Mongo C# Driver 및 RestSharp를 사용하여 Json.NET의 Rest API를 호출하여 직렬/직렬화를 수행합니다. Mongo ObjectId를 비 직렬화하는 Json.NET이 잘못된 결과를 제공합니다.
public class Person
{
[JsonProperty("_id"),JsonConverter(typeof(ObjectIdConverter))]
public ObjectId Id {get;set;}
public string Name {get;set;}
}
내가 새로운 Person 객체 생성 :
var person = new Person{Id = ObjectId.GenerateId(),Name='Joe Bloggs'};
POST를하고, 서버에서 내가 볼 나는 & GET을 POST하고 싶은, 다음과 같이 나는 Person 클래스가 있다고 가정 해 올바른 다음 : 나는 내가 클라이언트에서 얻을 ObjectId가이 GET 수행 할 때
{ _id: 52498b56904ee108c99fbe88, name: 'Joe Bloggs'}
문제는 즉이 아니라 {5249 .....} 내가 좋겠 {0000000000000 ...}이다 expe ct. 미가공 응답은 올바른 값을 나타내고 있지만 일단 역 직렬화하면 느슨하게됩니다.
ObjectIdConverter 코드는 다음과 같습니다
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)
{
var objectId = (ObjectId)existingValue; // at this point existingValue is {000...}
return objectId;
}
public override bool CanConvert(Type objectType)
{
return (objectType == typeof (ObjectId));
}
}
어떤 도움을 주시면 감사하겠습니다.
아아는 의미가 있습니다! 감사 브라이언, 좋은 대답! –