2012-06-08 8 views
4

RestSharp 클라이언트에서 MVC4 WebApi를 사용하고 있으며 ObjectIds를 직렬화 (또는 비 직렬화)하도록 올바르게 고심하고 있습니다. 클라이언트에서이 객체를 직렬화하는 가장 좋은/적절한 방법은 무엇MVC4 WebApi 직렬화/역 직렬화 MongoDB ObjectId

public class User 
{ 

    [BsonId] 
    public ObjectId Id { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 

} 

:

나는 기본 클래스과 같이 있나요? Id 속성을 시도한 모든 값은 ObjectId.Empty입니다.

감사합니다.

업데이트 :

나는 다른 ObjectIdDeserializers을 만드는 노력했다. 다음은 클라이언트로 보내지는 디시리얼라이저 및 클라이언트 및 샘플 json의 예제입니다.

public class ObjectIdDeserializer : IDeserializer 
{ 

    public string RootElement { get; set; } 
    public string Namespace { get; set; } 
    public string DateFormat { get; set; } 

    public T Deserialize<T>(RestSharp.IRestResponse response) 
    { 
     return BsonSerializer.Deserialize<T>(response.Content); 
    } 

} 
나는 위의 디시리얼라이저 호출하는 다음 줄을 추가 한 RestSharp에서

:

_client.AddHandler("application/json", new ObjectIdDeserializer()); 

그리고 몇 가지 예제 JSON은 다음과 같습니다

"User": 
{ 
    "Id": 
    { 
    "_timestamp":1339158960, 
    "_machine":7962014, 
    "_pid":4040, 
    "_increment":9499872 
    }, 
    "FirstName":"Test", 
    "LastName":"User" 
} 
+0

지금까지 시도한 것을 보여줄 수 있습니까? –

+0

@AndrewOrsich 방금 더 자세한 내용을 추가했습니다. 찾고 주셔서 감사 드리며 아이디어가 있다면 알려주세요. – zgirod

답변

3

에 대한 검색의 무리를 수행 한 후 그래서, 내가하려고했던 것에 대한 간단한 해결책을 찾을 수있었습니다.

이 대답의 접근 방식을 사용하면 속성은 ObjectId로 저장되고 코드에서는 단지 문자열입니다. 정확히 내가 성취하기를 바랬던 것.

https://stackoverflow.com/a/7982411/360843

관련 문제