기본 유형을 처리 할 때 Json.net의 기본 비 직렬화 동작을 재정의하는 방법이 있습니까? 예를 들어 object[]
3.14의 유형에 JSON 배열 [3.14,10,"test"]
역 직렬화 때 형 double
될 것이며 10 형 long
될 것이다. 어쨌든 나는이 타입 결정을 요격하거나 오버라이드 할 수 있기 때문에 값을 각각 decimal
과 int
으로 역 직렬화 할 수 있습니까?Json.Net의 기본 기본 유형 처리 재정의
기본적으로 항상 json 정수는 항상 int
으로 돌아가고 decimal
으로 돌아 오기를 원합니다. 이렇게하면 내 코드에 double
~ decimal
개의 전환을 주입해야하는 번거 로움을 줄일 수 있습니다.
Newtonsoft.Json.Serialization.DefaultContractResolver
을 확장하고 내 Newtonsoft.Json.JsonConverter
을 구현하는 방법을 살펴 보았지만 원하는 재정의를 구현하는 방법을 찾지 못했습니다.
예제 코드
내가 생각object[] variousTypes = new object[] {3.14m, 10, "test"};
string jsonString = JsonConvert.SerializeObject(variousTypes);
object[] asObjectArray = JsonConvert.DeserializeObject<object[]>(jsonString); // Contains object {double}, object {long}, object {string}
, 그래서 재정의 '적절한 대체 방법 없음'을 던지고 있습니다. 내가 놓친 게 있니? –
@MatthewRuston 현재 Json.Net 버전은'4.0.5'입니다. –
은 최근 출시 된 버전에서 가상 속성을 삭제 한 것 같습니다. 이상한. –