>백엔드 개발 >C++ >JSON.NET가 내 객체를 일련시키는 이유는 무엇입니까?

JSON.NET가 내 객체를 일련시키는 이유는 무엇입니까?

DDD
DDD원래의
2025-01-24 22:18:17522검색

Why is JSON.NET Double Serializing My Objects?

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 포맷터를 사용하는 것이 좋습니다.
  • 자세한 지침은 "ASP.NET 웹 API의 JSON 및 XML 직렬화"를 참조하세요.

위 내용은 JSON.NET가 내 객체를 일련시키는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.