$type
JSON 데이터에서 가치를 생성 하는 주요 목적 (또는 장점)은 무엇입니까? 어떤 식 으로든 역 직렬화를 단순화합니까?
TypeNameHandling
내 의도는 특히 역 직렬화 중에 강력한 유효성 검사를하는 것이었기 때문에 (비) 직렬화 기의 속성을 설정하여 활성화했습니다 . 하지만 이제는 생성 된 $type
정보 없이도 deserializer가 데이터를 deserialize하는 데 문제가 없음을 알았습니다 .
그렇다면 $type
Newtonsoft JSON과 함께 사용하는 사용 사례는 무엇입니까?
이 설정을 사용하면 유형 정의에 인터페이스 또는 (추상) 기본 클래스가있는 클래스를 직렬화 할 수 있습니다.
다음 유형을 고려하십시오.
public class MySerializableClass
{
public IOther Other {get;set;}
public BaseClass Base {get;set;}
}
public interface IOther
{
public string Foo {get;set;}
}
public abstract class BaseClass
{
public int MyNumber {get;set;}
}
다음과 같이하면 :
JsonConvert.DeserializeObject<MySerializableClass>(json);
json.net은 추상이기 때문에 IOther 및 Baseclass의 인스턴스를 생성하는 방법을 모릅니다. 따라서 결과 json의 $ type 멤버에 해당 속성의 인스턴스 유형을 저장하기 때문에 이러한 기본 클래스 또는 인터페이스의 직렬화를 지원하기 위해이 설정을 제공합니다.
bun은 일반적으로 db 또는 무언가에 저장된 json의 유형 이름이 변경 될 수 있고 (네임 스페이스 변경 등) 코드가 변경되는 동안 역 직렬화하는 데 문제가 있기 때문에이 작업을하지 말 것을 제안합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다