c# example documentation - Ruby 속성 명명 규칙을 따르는 C # JSON.NET 규칙?




2 Answers

업데이트 - 2016 년 9 월 :

Json.NET 9.0.1에는 SnakeCaseNamingStrategy 있습니다. 이를 사용하여 twitter_screen_name 스타일 속성을 자동으로 가질 수 있습니다.

DefaultContractResolver 에서 상속 받고 ResolvePropertyName 을 재정 의하여 원하는대로 속성 이름의 ResolvePropertyName 을 지정합니다.

CamelCasePropertyNamesContractResolver 는 속성 이름과 비슷한 전역 변경을 수행합니다.

source schema

http://json.codeplex.com/ 사용하고 있으며 Ruby 기반의 Rest API에 대해 이야기하고 있습니다. 문제는 대부분의 속성에 루비 밑줄 명명 규칙이 있다는 것입니다. 누구든지 JsonProperty를 많이 추가해야하는 것을 피할 수있는 방법을 알고 있는지 궁금합니다.

예를 들어, 나는 JsonProperty 속성을 추가하는 것을 피하고 serializer 설정에 내장 된 컨벤션을 사용하여 .NET 명명 규칙에 밑줄이있는 속성을 시도하고 매핑하려고합니다.

public class Member
{
    [JsonProperty(PropertyName = "avatar_url")]
    public string AvatarUrl { get; set; }

    [JsonProperty(PropertyName = "twitter_screen_name")]
    public string TwitterScreenName { get; set; }

    [JsonProperty(PropertyName = "website_url")]
    public string WebSiteUrl { get; set; }
}



버전 9부터는 새로운 명명 전략 속성이 존재하며 SnakeCaseNamingStrategy 클래스가 내장되어 있습니다. 아래 코드를 사용하고 contractResolverSerializerSettings.ContractResolver 로 등록하십시오.

var contractResolver = new DefaultContractResolver();
contractResolver.NamingStrategy = new SnakeCaseNamingStrategy();

이 클래스는 기본적으로 사전을 포함하지 않으며 수동으로 설정된 속성 값을 덮어 쓰지 않습니다. 그것들은 오버로드에서 전달할 수있는 두 개의 매개 변수입니다.

// true parameter forces handling of dictionaries
// false prevents the serializer from changing anything manually set by an attribute
contractResolver.NamingStrategy = new SnakeCaseNamingStrategy(true, false);



Related