[MONGODB] 전 세계적으로 속성없이 클래스에 JsonConverter를 사용
MONGODB전 세계적으로 속성없이 클래스에 JsonConverter를 사용
나는 MVC .NET 프로젝트를 가지고 있고, 나는 MongoDB를 사용하고 있습니다. 나는이 대답 설명으로, 문자열로 ObjectId가 속성을 직렬화하는 사용자 정의 JsonConverter을 사용합니다 : 자동 retun MongoDB를 ObjectId가 MVC에서 Json.NET와 문자열로
사용자 지정 변환은 특정 부동산에 사용되도록 거기에서 나는 속성을 사용 : [JsonConverter (대해서 typeof (객체 ID 변환기))
유형 ObjectId가의 모든 속성에 ObjectIdConverter를 사용하는 시리얼 라이저를 알 수있는 방법이 있습니까? 나는 전체 프로젝트에 가서이 속성을 추가 할 wan't하지 않습니다.
감사!
해결법
-
==============================
1.예, 프로그래밍 클래스 나 속성에 JsonConverter을 적용 할 사용자 정의 IContractResolver를 사용할 수 있습니다. 이 작업을 수행하는 가장 간단한 방법은 DefaultContractResolver 클래스에서 해결을 유도 한 후 적절한 방법을 무시하는 것입니다. 아래에 상관없이에서 나타날 수있는 어떤 클래스의, ObjectId가 유형의 모든 인스턴스 상에 ObjectIdConverter를 사용하도록 지시 Json.Net 한 예 리졸버이다.
예, 프로그래밍 클래스 나 속성에 JsonConverter을 적용 할 사용자 정의 IContractResolver를 사용할 수 있습니다. 이 작업을 수행하는 가장 간단한 방법은 DefaultContractResolver 클래스에서 해결을 유도 한 후 적절한 방법을 무시하는 것입니다. 아래에 상관없이에서 나타날 수있는 어떤 클래스의, ObjectId가 유형의 모든 인스턴스 상에 ObjectIdConverter를 사용하도록 지시 Json.Net 한 예 리졸버이다.
class CustomResolver : DefaultContractResolver { protected override JsonObjectContract CreateObjectContract(Type objectType) { JsonObjectContract contract = base.CreateObjectContract(objectType); if (objectType == typeof(ObjectId)) { contract.Converter = new ObjectIdConverter(); } return contract; } }
리졸버를 사용하려면 JsonSerializer 인스턴스를 구성하고 그 위에 ContractResolver 속성을 설정 한 다음 직렬화 / 역 직렬화를 수행하기 위해 해당 인스턴스를 사용할 수 있습니다. 당신이 JObject.ToObject ()와 JObject.FromObject (), 메모를 사용하는 경우 두 가지 방법은 JsonSerializer 인스턴스를 허용 과부하가있다.
JsonSerializer serializer = new JsonSerializer(); serializer.ContractResolver = new CustomResolver(); JObject jo = JObject.FromObject(foo, serializer);
당신이 당신의 직렬화 / 역 직렬화를 수행 할 JsonConvert 클래스를 사용하는 경우 또는, 당신은 JsonSerializerSettings의 인스턴스를 만들 수 있습니다, 그에 ContractResolver 속성을 설정 한 후 SerializeObject ()와 DeserializeObject () 메소드에 설정을 전달합니다.
JsonSerializerSettings settings = new JsonSerializerSettings(); settings.ContractResolver = new CustomResolver(); Foo foo = JsonConvert.DeserializeObject<Foo>(json, settings);
도움이 되었기를 바랍니다.
from https://stackoverflow.com/questions/27332258/globally-use-a-jsonconverter-on-a-class-without-the-attribute by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] MongoDB를 - 월별로 그룹 (0) | 2019.12.26 |
---|---|
[MONGODB] 창에 MongoDB를 시작하는 방법 (0) | 2019.12.25 |
[MONGODB] MongoDB의 응집을 이용하여 한계 정렬 각 그룹 [중복] (0) | 2019.12.25 |
[MONGODB] MongoDB의 변경 문서에 대한 통지를 받기 (0) | 2019.12.25 |
[MONGODB] MongoDB의 문서에서 기준과 일치하는 Upsert 배열 요소? (0) | 2019.12.25 |