아니요, 불가능합니다.
Json.NET documentation을 살펴 보겠습니다. 특히 JsonPropertyAttribute 클래스에 대한 도움말 페이지.
는 인용 :
는 "항상 지정된 이름을 가진 멤버를 직렬화 할 JsonSerializer 지시합니다."
Newtonsoft.Json 네임 스페이스에 선언되었습니다. 우리는 그것이 어떻게 선언되었는지 결정할 필요가 있습니다. 이제 코드 플렉스에 Json.NET의 소스 코드를 살펴 보자 : 질문에 대한 답
http://json.codeplex.com/
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property |
AttributeTargets.Parameter, AllowMultiple = false)]
public sealed class JsonPropertyAttribute : Attribute
{
//...
}
추측을. 특성의 AllowMultiple 속성은 false로 설정됩니다. 따라서이 속성을 사용하여 속성, 필드 또는 매개 변수를 두 번 이상 꾸밀 수 없습니다.
Json.net이 어떤 속성을 사용할 것인지를 어떻게 예상 할 수 있다고해도? 받은 JSON 데이터를 비 직렬화 할 수있는 Twitter 및 Facebook 유형을 별도로 만들었습니다.
그래서 :
Twitter -> JSON -> Twitter specific types
Facebook -> JSON -> Facebook spefic types
그런 다음 응용 프로그램 대신 직접 이러한 유형의 주소의 사용 추상화를 만들 수 있습니다. 그들은 단지 특정 소셜 미디어 구현에 속합니다.
트위터/페이스 북/... speficic 유형 -> 귀하의 유형
당신이 직접 "일반적인 유형"으로 데이터를 역 직렬화 할 경우에, 당신은 단지 그들이 일치하지 않기 때문에 어려움을 겪고 유지하려고 100 % 수신 된 데이터로 인해 넌리 펑키하고 탈 직렬화 로직을 유지하기가 어렵습니다.
또 다른 옵션은 사용자 지정 Json.NET 변환기를 만드는 것입니다.
http://geekswithblogs.net/DavidHoerster/archive/2011/07/26/json.net-custom-convertersndasha-quick-tour.aspx
그냥 트위터와 페이스 북에 대한 변환기를 작성하고 JSON 데이터를 역 직렬화 할 때, 당신이 사용하고자하는 변환기를 지정합니다.
- TwitterConverter
- FacebookConverter
예컨대 :
MySocialType myType = JsonConvert.DeserializeObject<Mapped>(json,
new TwitterConverter());
어쨌든 나는 직렬화 논리 자체 클래스 유형을 오염 피하려고한다. 내가 할 수있는 가장 쉬운 방법으로 그것을 해결할 생각
잘 사용 어떤 모델 클래스 잊고, 그냥 사용할 수 있습니다, 나는 그것을 기대했다 둘 중 하나만 확인하고 null이 아닌 것을 사용합니다. 어쨌든 나는 다른 것을 생각해 낼 필요가있다. 어쨌든 고마워! :) –
나는 마지막 옵션이 오히려 잘 작동한다고 생각한다. – JefClaes