어떻게 Json에게 말할까?모든 Enum에 StringEnumConverter를 적용하려면 Net 글로벌하게
열거를 문자열 표현으로 역직렬화하거나 json.net에서 역직렬화하려고 합니다.프레임워크에 적용하도록 지시할 수 있는 유일한 방법은StringEnumConverter
다음과 같이 문제의 속성에 주석을 붙입니다.
[JsonConverter(typeof(StringEnumConverter))]
public virtual MyEnums MyEnum { get; set; }
다만, 제 사용 예에서는, json.net 를 글로벌하게 설정해 두면, 모든 열거가, 를 사용해 최적화(해제)되도록 하는 것이 훨씬 편리합니다.StringEnumConverter
추가 주석이 필요 없습니다.
예를 들어 세관의 도움을 받아 그렇게 할 수 있는 방법이 있습니까?JsonSerializerSettings
?
를 추가합니다.StringEnumConverter
에게JsonSerializerSettings
컬렉션을 변환합니다.
시리얼라이저가 camelCasing 을 사용하는 경우는, 다음의 설정도 가능합니다.
SerializerSettings.Converters.Add(
new StringEnumConverter { CamelCaseText = true });
시리얼화 됩니다.SomeValue
로.someValue
.
그 외의 응답은 ASP로 동작합니다.NET 단, 일반적으로 임의의 컨텍스트에서 JsonConvert를 호출하기 위해 이러한 설정을 할 경우 다음 작업을 수행할 수 있습니다.
JsonConvert.DefaultSettings = (() =>
{
var settings = new JsonSerializerSettings();
settings.Converters.Add(new StringEnumConverter {CamelCaseText = true});
return settings;
});
(http://james.newtonking.com/archive/2013/05/08/json-net-5-0-release-5-defaultsettings-and-extension-data) 참조).
Global.asax.cs에서 다음을 추가합니다.
HttpConfiguration config = GlobalConfiguration.Configuration;
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add
(new Newtonsoft.Json.Converters.StringEnumConverter());
ASP의 경우.NET Core 2는, 다음의 작업을 실시합니다.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc()
.AddJsonOptions(options =>
{
options.SerializerSettings.Converters.Add(new StringEnumConverter());
});
...
주의해 주십시오.services.AddJsonOptions(...)
MVC 설정을 작성하기 때문에 MVC에 태그를 붙여야 합니다.
이전 답변은 버전 12.0.1에서 최신이 아닙니다.새로운 방법은 Naming Strategy를 사용하는 것입니다.https://www.newtonsoft.com/json/help/html/NamingStrategyCamelCase.htm
serializerSettings.Converters.Add(
new StringEnumConverter { NamingStrategy = new CamelCaseNamingStrategy() }
);
언급URL : https://stackoverflow.com/questions/7427909/how-to-tell-json-net-globally-to-apply-the-stringenumconverter-to-all-enums
'programing' 카테고리의 다른 글
jQuery를 사용하여 동적으로 로드된 인라인 CSS 또는 외부 CSS를 적용하는 방법 (0) | 2023.03.23 |
---|---|
치명적인 오류:학습되지 않은 반사예외:get_site_editor_type 메서드가 없습니다. (0) | 2023.03.23 |
AngularJS - 디렉티브와 컨트롤러 (0) | 2023.03.23 |
WooCommerce에서 주문 ID를 얻으려면 어떻게 해야 하나요? (0) | 2023.03.23 |
wp-config.php에서 PHP 오류를 표시하지 않는 도커 구성 파일? (0) | 2023.03.23 |