DataContractJsonSerializer와 JavaScriptSerializer의 차이점은 무엇입니까?
.NET Framework는 시스템에 포함되어 있습니다.런타임시리얼화Json.DataContractJsonSerializer 및 시스템.Web.스크립트시리얼화JavaScriptSerializer. 둘 다 JSON을 디시리얼라이즈합니다.이러한 유형 중 하나를 선택해야 할 시기를 어떻게 알 수 있습니까?MSDN은 그들의 상대적인 장점이 무엇인지 명확히 하지 않는다.
JSON을 소비 또는 방출하는 프로젝트가 몇 개 있으며, 지금까지 각 프로젝트별로 선택된 클래스는 각 프로젝트의 프라이머리 개발자의 의견에 따라 결정되어 왔습니다.일부는 단순하고, 2개는 JSON에서 관리되는 유형을 생성하는 복잡한 논리를 가지고 있지만(타입은 스트림에 밀접하게 매핑되지 않음) 속도에 중점을 두지 않고, 하나는 속도가 필요합니다.적어도 현시점에서는 WCF와 상호 작용하지 않습니다.
저는 대체 도서관에 관심이 있지만, 누군가 제 질문에 답을 해 주셨으면 합니다.
DataContractJsonSerializer는 일반적으로 시리얼화된 유형이 DataContract 속성이 적용된 POCO 클래스인 WCF 클라이언트애플리케이션에서 사용하기 위한 것입니다.Data Contract도 시리얼화도 없습니다.WCF의 매핑메커니즘에 의해, 플랫폼이 동종인 경우에만, 송수신이 매우 심플하게 됩니다.다른 도구 집합에서 혼합을 시작하면 프로그램이 잘못될 수 있습니다.
JavaScriptSerializer는 어나니머스 타입을 포함한 모든 타입을 시리얼화할 수 있으며(일방향), 보다 적합한 방법으로 시리얼화할 수 있습니다.WCF의 "자동화" 기능은 상실되지만 더 많은 통합 옵션을 얻을 수 있습니다.
코멘트를 보면 알 수 있듯이, AJAX의 시리얼라이제이션에는 많은 옵션이 있습니다.또, 속도와 유지보수의 용이성에 관한 질문에 대처하려면 , 모든 팀의 요구를 만족시키는 솔루션을 찾아, 장기적으로는 모두가 독자적인 방법으로 작업을 실시하기 때문에, 유지보수성의 문제를 경감하는 것도 검토해 볼 가치가 있습니다.
2014-04-07 업데이트: JSON 사용을 권장합니다.가능한 경우 NET.이 질문에서 검토된 3가지 라이브러리의 리뷰에 대해서는 http://james.newtonking.com/json의 기능 비교를 참조하십시오.
2015-05-26 업데이트: 귀사에서 상용 라이선스가 필요한 제품을 사용하거나 모든 성능을 필요로 하는 경우 https://servicestack.net/을 확인하십시오.
양쪽 모두 거의 동일하지만 매우 다른 인프라스트럭처를 사용하고 있기 때문에 시리얼화/디시리얼라이즈 하는 클래스에 다른 제한을 적용하여 시리얼화/디시리얼라이즈 프로세스를 조정할 때 다른 수준의 유연성을 제공합니다.
위해서DataContractJsonSerializer
일련화할 모든 클래스를 다음을 사용하여 표시해야 합니다.DataContract
atrtibute 및 모든 멤버 사용DataMember
기여하다.일부 클래스에 열거 멤버가 있는 경우 enums도 다음과 같이 표시해야 합니다.DataContract
및 각 열거 멤버 - 포함EnumMember
기여하다.또한.DataContractJsonSerializer
그럼 타입 해결 로직을 변경하고 시리얼화하는 타입을 대용품으로 대체함으로써 시리얼화/디시리얼라이제이션 프로세스 전체를 세밀하게 제어할 수 있습니다.
위해서JavaScriptSerializer
json 문자열에서 개체를 역직렬화하려는 경우 매개 변수 없는 생성자를 제공해야 합니다.
저 같은 경우에는 주로JavaScriptSerializer
프레젠테이션 로직에서는 추가 ajax 요청 없이 페이지와 함께 Json에서 렌더링할 단순 모델이 있습니다.그리고 나는 보통 그것들을 c#으로 역직렬화할 필요가 없다 - 그래서 오버헤드가 전혀 없다.그러나 객체를 데이터 저장소(일반적으로 sql이 없는 스토리지)에 저장하고 나중에 로드하는 지속성 로직이라면DataContractJsonSerializer
속성을 넣는 오버헤드는 시리얼라이제이션/디시리얼라이제이션프로세스 튜닝에 있어서 유연성이 높기 때문에 특히 최신 버전의 오브젝트에 시리얼라이제이션 데이터를 로드하고 정의를 갱신하는 경우에는 더욱 그렇습니다.
저는 개인적으로DataContractJsonSerializer
과공학적인 냄새가 나요그냥 건너뛰고 같이 가겠어요.JavaScriptSerializer
. 다음과 같은 경우JavaScriptSerializer
사용할 수 없습니다. 금요일을 사용하실 수 있습니다.13일(내가 쓴 도서관.p.
언급URL : https://stackoverflow.com/questions/9301878/whats-the-difference-between-datacontractjsonserializer-and-javascriptserialize
'programing' 카테고리의 다른 글
Angular 1.6의 단순 해시(#/)가 아닌 URL 해시방(#!/) 프리픽스 (0) | 2023.04.02 |
---|---|
각도에서의 컨트롤러 코드 구성 (0) | 2023.04.02 |
React JS: on Click 청취자가 함수여야 하지만 형식 문자열이 필요합니다. (0) | 2023.04.02 |
jQuery: 앵커 href를 온클릭하여 비동기적으로 송신합니다. (0) | 2023.04.02 |
OAuth2RestTemplate용 Spring Security 5 교체 (0) | 2023.04.02 |