나는 mssql 데이터베이스에서 꽤 일반적인 linq2sql 비즈니스 모델을 가지고있다. 테이블 간에는 몇 가지 연관성이 있습니다. 전체 모델은 별도의 어셈블리에 있습니다. 직렬화를 위해 JSON.NET 라이브러리를 사용하고 있습니다.JSON에 선택적으로 Linq2sql 모델 직렬화
이제 JSON에 해당 모델을 직렬화하고 사용할 속성과 현재 적용 할 속성을 지정해야합니다. 속성을 사용할 수 없지만 메타 데이터 클래스에 대한 아이디어가 마음에 들지 않습니다.
그래서 내가 이런 식으로 확장 방법을 사용하여에 대해 생각했다 :public static class User {
public static object GetSerializable(this DataModel.User user) {
return new {
user.Id, user.LoginName, user.FirstName, user.LastName
}
}
}
이것은, 그러나 나는이 같은 경우에 사용하는 방법을 잘 좋은 아니다 것 :
[JsonObject]
public class AuthModel {
[JsonProperty]
public DataModel.User { get; set; }
}
마 당신은 그 확장 메소드를 효과적으로 사용하는 방법을 알고 있습니까? 아니면 다른 완전히 다른 아이디어입니까?
감사합니다! 유창한 Json은 재미있어 보이는데, json.net 대신에 사용하는 것에 대해 생각할 것입니다. 사용자 지정 변환기는 옵션 일 수 있지만 최후의 수단으로 사용하고 있습니다. 그러나 KeyValuePair는 쓸모가 없거나 정확하게 사용하지 않는다. – FredyC
Allright ... 유창한 Json은 훌륭하지만 너무 지나치다. JSON.NET에서는 기본적으로 구성없이 간단한 객체를 직렬화 할 수 있습니다. 이 목적을 위해 사용자 지정 변환기가 다소 제한되어 있으므로 속성 자체에 대한 참조가 없으므로 serialization에 대한 정보가있는 추가 특성을 읽을 수 없습니다. – FredyC
예 Json.NET은 부드럽고 구성이 필요하지 않습니다. 그러나 귀하의 경우에는 구성이 필요하며 속성을 사용할 수 없습니다. 확실히 Json.NET을 사용하려면 JsonIgnore 등의 모든 Json 속성이 적용된 POCO를 만들고이 POCO에 영구 클래스를 매핑하십시오.따라서 매퍼와 POCO는 json이되는 것을 미세하게 제어 할 것입니다. – Zasz