Nice programing

MVC 4 Web API에서 Json.NET에 대한 사용자 지정 JsonSerializerSettings를 설정하는 방법은 무엇입니까?

nicepro 2020. 11. 10. 22:18
반응형

MVC 4 Web API에서 Json.NET에 대한 사용자 지정 JsonSerializerSettings를 설정하는 방법은 무엇입니까?


ASP.NET Web API는 기본적으로 개체를 (역) 직렬화하는 데 Json.NET을 사용한다는 것을 알고 있지만 JsonSerializerSettings사용할 개체 를 지정하는 방법이 있습니까?

예를 들어 type직렬화 된 JSON 문자열에 정보 를 포함하려면 어떻게해야 합니까? 일반적으로 .Serialize()호출에 설정을 삽입 하지만 Web API는 자동으로 수행합니다. 수동으로 설정을 삽입하는 방법을 찾을 수 없습니다.


개체 JsonSerializerSettingsFormatters.JsonFormatter.SerializerSettings속성 을 사용하여 사용자 지정할 수 있습니다 HttpConfiguration.

예를 들어 Application_Start () 메서드에서이를 수행 할 수 있습니다.

protected void Application_Start()
{
    HttpConfiguration config = GlobalConfiguration.Configuration;
    config.Formatters.JsonFormatter.SerializerSettings.Formatting =
        Newtonsoft.Json.Formatting.Indented;
}

JsonSerializerSettings각에 대해 지정할 JsonConvert수 있으며 전역 기본값을 설정할 수 있습니다.

JsonConvert과부하가있는 싱글 :

// Option #1.
JsonSerializerSettings config = new JsonSerializerSettings { ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore };
this.json = JsonConvert.SerializeObject(YourObject, Formatting.Indented, config);

// Option #2 (inline).
JsonConvert.SerializeObject(YourObject, Formatting.Indented,
    new JsonSerializerSettings() {
        ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore
    }
);

Application_Start()Global.asax.cs의 코드를 사용한 전역 설정 :

JsonConvert.DefaultSettings = () => new JsonSerializerSettings {
     Formatting = Newtonsoft.Json.Formatting.Indented,
     ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore
};

참조 : https://github.com/JamesNK/Newtonsoft.Json/issues/78


대답은이 두 줄의 코드를 Global.asax.cs Application_Start 메서드에 추가하는 것입니다.

var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.SerializerSettings.PreserveReferencesHandling = 
    Newtonsoft.Json.PreserveReferencesHandling.All;

참조 : 원형 객체 참조 처리

참고 URL : https://stackoverflow.com/questions/13274625/how-to-set-custom-jsonserializersettings-for-json-net-in-mvc-4-web-api

반응형