당신은 아무것도하지 않는 문제의 특성에 더미 컨버터를 추가 할 수 있습니다
이
public class NoConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
// Note - not called when attached directly via [JsonConverter(typeof(NoConverter))]
throw new NotImplementedException();
}
public override bool CanRead { get { return false; } }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override bool CanWrite { get { return false; } }
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException();
}
}
그런 [JsonConverter(typeof(NoConverter))]
를 사용하여 속성에 연결합니다. 이렇게하면 JsonConverter
특성 변환기가 전역 적으로 지정된 변환기를 대체하지만 CanRead
및 CanWrite
이 모두 false를 반환하므로 변환이 수행되지 않습니다. 열거 형 모음의 경우 [JsonProperty(ItemConverterType = typeof(NoConverter))]
을 사용할 수 있습니다. 당신은 유형을 정의 할 경우, 예를 들어
는 :
public enum Foo { A, B, C }
public class RootObject
{
[JsonConverter(typeof(NoConverter))]
public Foo FooAsInteger { get; set; }
public Foo FooAsString { get; set; }
}
그런 다음
var root = new RootObject { FooAsInteger = Foo.B, FooAsString = Foo.B };
var json = JsonConvert.SerializeObject(root, Formatting.Indented, new StringEnumConverter());
Console.WriteLine(json);
출력
{
"FooAsInteger": 1,
"FooAsString": "B"
}
샘플 fiddle를 생성합니다.
출처
2016-09-28 06:00:41
dbc
이상적으로 전역 설정 대신 필요한 '속성'만 꾸미십시오 –
특정 속성 또는 특정 열거 형을 선택 해제 하시겠습니까? – dbc
@dcb 특정 속성의 경우, 아마도 특성을 사용합니다. – orad