JObject.Parse를 사용하여 Json.NET에서 날짜 역직렬화 비활성화
인기 있는 JSON 처리 라이브러리인 Json.NET은 유연한 역직렬화 옵션을 제공합니다. 기본적으로 DateTime 값이 있는 속성을 .NET DateTime 개체로 변환하려고 시도합니다. 그러나 특정 시나리오에서는 이 동작이 바람직하지 않을 수 있습니다.
다음 코드를 고려하세요.
string s = "2012-08-08T01:54:45.3042880+00:00"; JObject j1 = JObject.FromObject(new { time = s }); Object o = j1["time"];
이 예에서 o는 원래 날짜-시간 값을 포함하는 문자열입니다. 그러나 JSON 문자열을 다른 프로그램으로 전송하고 JObject.Parse를 사용하여 다시 구문 분석하면 결과가 변경됩니다.
JObject j2 = JObject.Parse(j1.ToString()); Object o2 = j2["time"];
이제 o2는 다른 표현을 사용하는 Date 객체입니다. 이러한 불일치는 원래 값을 보존해야 하는 상황에서 문제가 될 수 있습니다.
해결책
JObject.Parse를 사용할 때 날짜 역직렬화를 비활성화하기 위해 Json.NET은 다음을 제공합니다. 대안적인 접근 방식. Parse를 직접 사용하는 대신 JsonReader를 사용하여 구문 분석 옵션을 구성할 수 있습니다.
using(JsonReader reader = new JsonTextReader(new StringReader(j1.ToString()))) { reader.DateParseHandling = DateParseHandling.None; JObject o = JObject.Load(reader); }
JSON을 JObject에 로드하기 전에 DateParseHandling을 None으로 설정하면 날짜-시간 값이 문자열로 처리되어 해당 값이 유지됩니다. 원본 형식입니다.
이 솔루션은 Parse에서 호출되는 JObject의 내부 Load 메서드에 의존합니다. 이 접근 방식은 Parse의 기본 동작에 비해 역직렬화 프로세스를 더 효과적으로 제어할 수 있습니다.
위 내용은 Json.NET의 JObject.Parse에서 날짜 역직렬화를 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!