내 응용 프로그램은 다음과 같은 형식을 사용하여 생성 된 JSON 파일을 읽습니다.
{
"myProperty": {complex JSON here}
}
class MyClass
{
public MyChildClass MyProperty {get; set;}
}
클래스가 작동하는 방식을 변경하여 대신 다음과 같이 보이도록해야합니다.
class MyClass
{
public MyNewChildClass MyNewProperty {get; set;}
}
이전 형식으로 만든 파일을 지원할 수 있어야하지만 새 형식을 사용하여 만든 파일도 지원해야합니다.
MyChildClass
개체를 개체로 변환하는 코드가 MyNewChildClass
있지만 개체가 이전 형식을 역 직렬화하고 속성 이름과 유형을에서 MyChildClass MyProperty
로 변경하고 다음을 MyNewChildClass MyNewProperty
사용하여 직렬화 및 역 직렬화 할 때 새 형식을 사용 하도록 직렬화를 설정하려면 어떻게해야합니까? 새 형식이 JSON 파일에 포함 된 경우?
두 속성을 모두 사용하면 json이 새롭고 오래된 것 모두에서 작동합니다.
class MyClass
{
[JsonPropert("myProperty")]
public MyChildClass MyProperty {get; set;}
[JsonProperty("myNewProperty")] // -> Remember, case matters.
public MyNewChildClass MyNewProperty {get; set;}
}
클래스를 deserialize 할 때 null이 아닌지 확인하고 그 작업을 수행하십시오 (각각의 다른 방법). 이렇게하면 주요 변경 사항을 최소화하는 데 도움이됩니다.
BTW>. 새 코드를 이전 코드로 또는 그 반대로 변환하는 코드가있는 경우 이전 값이 null인지 확인한 다음 새 값을 이전 값으로 변환해야하는 해당 프로세스 / 메서드를 실행하고 객체를 계속 진행할 수 있습니다. 역 직렬화 이후 여야합니다.
var properties = JsonConvert.DeserializeObject<MyClass>("data");
if (properties.MyNewProperty == null)
{
properties = myMethodToConvertOldToNew(properties);
}
public MyClass myMethodToConvertOldToNew(MyClass)
{
if (properties.New == null)
{
properties.New = ConversionMethod(properties.Old, properties.New);
// dont have to, but,
properties.Old = null;
}
return properties.
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다