programing

기본 글로벌 json 시리얼라이저 설정

megabox 2023. 3. 20. 21:46
반응형

기본 글로벌 json 시리얼라이저 설정

글로벌 시리얼라이저를 다음과 같이 설정하려고 합니다.global.asax.

var formatter = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
formatter.SerializerSettings = new JsonSerializerSettings
{
    Formatting = Formatting.Indented,
    TypeNameHandling = TypeNameHandling.Objects,
    ContractResolver = new CamelCasePropertyNamesContractResolver()
};

다음 코드를 사용하여 개체를 직렬화할 때 글로벌 직렬화 설정이 사용되지 않습니까?

return new HttpResponseMessage(HttpStatusCode.OK)
{
    Content = new StringContent(JsonConvert.SerializeObject(page))
};

글로벌 시리얼라이저를 이렇게 설정할 수 없습니까?아니면 뭔가 부족한 건가요?

의 설정JsonConvert.DefaultSettings성공했어.

JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{
    Formatting = Formatting.Indented,
    TypeNameHandling = TypeNameHandling.Objects,
    ContractResolver = new CamelCasePropertyNamesContractResolver()
};

받아들여진 답변은 나에게 효과가 없었다..netcore에서, 나는 그것을...

services.AddMvc(c =>
                 {
                 ....
                 }).AddJsonOptions(options => {
                     options.SerializerSettings.Formatting = Formatting.Indented;
                     ....
                 })

콘텐츠 네고시에이트된 응답을 반환하고 포메터 설정을 활성화하려면 다음 작업을 수행합니다.

return Request.CreateResponse(HttpStatusCode.OK, page);

시리얼라이저를 설정하는 장소에 대해서는, 올바른 것입니다.단, 이 시리얼라이저는 사이트에 대한 요청이 요청된 콘텐츠유형의 JSON을 사용하여 이루어질 때 사용됩니다.SerializeObject를 호출할 때 사용되는 설정의 일부가 아닙니다.속성을 통해 global.asax로 정의된 JSON 직렬화 설정을 노출하면 이 문제를 해결할 수 있습니다.

public static JsonSerializerSettings JsonSerializerSettings
{
    get
    {
        return GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings;
    }
}

다음으로 컨트롤러 내에서 시리얼화를 실행할 때 다음 속성을 사용하여 시리얼화 설정을 합니다.

return new HttpResponseMessage(HttpStatusCode.OK)
{
    Content = new StringContent(JsonConvert.SerializeObject(page, WebApiApplication.JsonSerializerSettings))
};

언급URL : https://stackoverflow.com/questions/21815759/set-default-global-json-serializer-settings

반응형