Newtonsoft.json아시다시피, 일반적으로 사용되는 JSON 직렬화 및 역직렬화 도구
DataContractAttributeDataContractSerializer와 같은 직렬라이저로 직렬화할 수 있는 데이터 계약을 정의하거나 구현하기 위해 해당 타입을 지정합니다. 타입을 직렬화할 수 있게 하려면, 타입 작성자는 그 타입에 대한 데이터 계약을 정의해야 합니다.
어려운 문제에 부딪혔습니다,부모 클래스는 [DataContract] 기능을 가지고, 자식 클래스는 부모 클래스를 상속하며, 서브클래스의 모든 속성은 [DataMember] 속성으로 직렬화 및 비직렬화되어야 합니다부모 클래스가 다른 사람의 캡슐화된 dll이기 때문에, 부모 클래스의 [DataContract] 기능은 삭제할 수 없습니다!
테스트는 다음과 같습니다: Test1 클래스는 [DataContract] 기능을 가지고 있으며, 속성에 [DataMember] 기능이 추가되지 않으면 직렬화 및 디직렬라이저가 실패할 수 있습니다. 아래 그림에서 확인할 수 있습니다:
우리는 Test1 클래스의 [DataContract] 특징에 주석을 달았고, 다음과 같이 정상적으로 직렬화와 비직렬화가 가능하다는 것을 발견했습니다:
Newtonsoft.Json의 고급 사용 방법이 이 기능을 무시할 수 있나요? 답은 '예'입니다!
Json.Net의 OptOut 속성을 사용하세요. 데이터가 DataContract보다 우선권을 가집니다.
// 초록: 모든 공용 회원은 기본적으로 연속 번호로 지정되어 있습니다. 회원은 Newtonsoft.Json.JsonIgnoreAttribute를 사용하여 제외할 수 있습니다. 또는 System.NonSerializedAttribute. 이것이 기본 멤버 직렬화 패턴입니다. 옵트아웃 = 0, // 초록: Newtonsoft.Json.JsonPropertyAttribute 또는 System.Runtime.Serialization.DataMemberAttribute로 표시된 멤버만 해당됩니다 연재 처리되어 있습니다. 이 멤버 직렬화 모드는 태깅으로도 설정할 수 있습니다 클래스와 System.Runtime.Serialization.DataContractAttribute를 포함합니다. 옵틴 = 1, // 초록: 모든 공공 및 민간 분야는 연속 처리됩니다. 회원은 Newtonsoft.Json.JsonIgnoreAttribute를 사용하여 제외할 수 있습니다. 또는 System.NonSerializedAttribute. 이 멤버 직렬화 패턴도 괜찮습니다 클래스에 System.SerializableAttribute를 태그하고 IgnoreSerializableAttribute를 설정하여 설정하세요 Newtonsoft.Json.Serialization.DefaultContractResolver를 false로 설정하세요. 필드 = 2
면책 조항: Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.
Mail To:help@itsvse.com