반응형
MVC 4 Web API에서 Json.NET에 대한 사용자 지정 JsonSerializerSettings를 설정하는 방법은 무엇입니까?
ASP.NET Web API는 기본적으로 개체를 (역) 직렬화하는 데 Json.NET을 사용한다는 것을 알고 있지만 JsonSerializerSettings
사용할 개체 를 지정하는 방법이 있습니까?
예를 들어 type
직렬화 된 JSON 문자열에 정보 를 포함하려면 어떻게해야 합니까? 일반적으로 .Serialize()
호출에 설정을 삽입 하지만 Web API는 자동으로 수행합니다. 수동으로 설정을 삽입하는 방법을 찾을 수 없습니다.
개체 JsonSerializerSettings
의 Formatters.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;
참조 : 원형 객체 참조 처리
반응형
'Nice programing' 카테고리의 다른 글
GCC에서 생성 한 asm을 어떻게 컴파일합니까? (0) | 2020.11.10 |
---|---|
matplotlib에서 선 스타일을 순환 할 수 있습니까? (0) | 2020.11.10 |
목록 디스플레이의 다 대다 장고 (0) | 2020.11.10 |
Elixir에서 맵 변수로 구조체를 어떻게 초기화합니까? (0) | 2020.11.10 |
wpf ComboBox DisplayMemberPath, SelectedValue 및 SelectedValuePath와 혼동 (0) | 2020.11.10 |