JSON.NET 이중 직렬화 문제
JSON.NET을 사용하여 객체를 직렬화할 때 이상한 문제가 발생할 수 있습니다. 객체가 이중 직렬화됩니다. 이로 인해 응답의 JSON 데이터가 큰따옴표로 묶이고 포함된 따옴표가 이스케이프됩니다.
근본 원인
문제의 근원은 직렬화 방식에 있습니다. 예제처럼 JsonConvert.SerializeObject(instance)
을 사용하면 객체가 두 번 직렬화됩니다. 이는 먼저 문자열로 직렬화한 다음 API 컨트롤러가 이를 JavaScript 문자열 리터럴로 직렬화하기 때문입니다.
솔루션
이 문제를 해결하려면 객체를 직접 반환하세요.
<code class="language-csharp">public IEnumerable<foobar> GetFoobars() { var foobars = ...; return foobars; }</code>
대체 방법
또는 Web API의 기본값에 직접 사용자 지정 변환기를 추가하도록 선택할 수 있습니다. HttpConfiguration
:
<code class="language-csharp">config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new FooConverter()); config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new BarConverter());</code>
기타 팁
위 내용은 JSON.NET가 내 객체를 일련시키는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!