0

Silverlight 4에서 json 데이터를 deserialize하기 위해 DataContractJsonSerializer를 사용합니다. Json 데이터 키 이름이 클래스 속성 이름과 일치하지 않습니다. 그래서 나는 DataMemberAttribute를 사용해야한다고 생각합니다. 나는 사람의 기본 클래스 모델에 DataContractAttribute를 적용하지 않았기 때문에Silverlight 4 DataContractJsonSerializer, 파생 클래스의 개인 필드

이제
[DataContract] 
public class Person : Model 
{ 
    [DataMember(Name = "id")] 
    private int _id; 
    public int Id 
    { 
     get { return _id; } 
     set { _id = value; } 
    } 

    [DataMember(Name = "name")] 
    private string _name; 
    public string Name 
    { 
     get { return _name; } 
     set { _name = value; } 
    } 
} 

직렬화 실패 : 그래서 나는 다음과 같은했다. 그것은 엄격한 요구 사항입니까? 또한 DataContractAttribute를 Model에 적용한 후에 공용 속성이 아닌 개인 필드에 DataMember 특성을 적용했기 때문에 deserialization이 다시 실패합니다. 왜 사적 구성원에게 적용 할 수 없습니까?

참고 : 서버 쪽 코드는 ASP.NET이 아닙니다. WCF는 사용되지 않습니다.

답변

1

전용 멤버가 WCF를 통해 serialize하도록하려면 private 대신 모두 protected internal으로 변경해야합니다. 동일한 내용이 DataContractJsonSerializer에 적용될 수 있습니까?

+0

내 어셈블리에도 InternalsVisibleTo 특성을 적용해야합니까? – synergetic

+0

물론입니다. 그 작은 보석을 잊어 버렸어. –

+0

기본 클래스에 DataContract 특성을 적용하는 것은 어떻습니까? 그것은 전부 아니면 아무것도 아닌 것입니까? – synergetic

관련 문제