NewtonSoft Json을 사용하여 변수 유형 속성으로 클래스로 역 직렬화하는 방법은 무엇입니까?

루이스 네 그리니

NewtonSoft JSON을 사용하여이 유형의 객체로 역 직렬화하는 방법은 무엇입니까? 구조에는 속성 유형 변수가 포함되어 있지만이 구조를 기반으로하는 NewtonSoft를 사용하면이 속성이 다른 클래스가됩니다.

다음 코드 예 :

public class RootProduct
{
    public Package Package {get; set;}
}

public class Package
{
    //Package has a property in which the class type should be changed in order to deserialize
    public Package_id ThisValueIsVariable {get; set;}
}

public class Package_id
{
    public string product_name {get; set;}
}

이 패키지의 데이터 쿼리에서 Package_id를 보내야합니다.이 쿼리의 반환은 아래 구조와 같이 수신됩니다. "Package_id"필드 (JSON 반환)는 쿼리에서 보낸이 코드입니다.

반환 된 JSON :

"Package": {
   "Package_id": { //This is the value that changes according to the value passed in the query to JSON
       "package_name": "my product name"
   }
 }

"Package": {
   "SecondPackage_id": { //This is the value that changes according to the value passed in the query to JSON
      "package_name": "my product name"
   }
 }

"Package": {
      "ThirdPackage_id": { //This is the value that changes according to the value passed in the query to JSON
          "package_name": "my product name"
      }
 }

최신 정보:

위 코드에서는 이름이 "package_id"인 클래스가 하나만 있기 때문에 첫 번째 제품 만 역 직렬화되고 두 번째 및 세 번째 JSON 항목은 SecondPackage_id 클래스가 연속적으로 존재하지 않기 때문에 JsonConvert.Deserialize를 사용하여 역 직렬화되지 않습니다.

데어 데블

솔루션은 런타임 전에 이름을 알고 있는지 여부에 따라 다릅니다.

가능한 이름을 미리 알고 있으면 다음과 같이 Package 클래스의 각 유형에 대해 별도의 속성을 만들 수 있습니다.

public class Package
{
    public Package_id FirstPackage {get; set;}
    public Package_id SecondPackage {get; set;}
    public Package_id ThridPackage {get; set;}
}

다른 속성은 null로 다시 직렬화해야합니다.

런타임에 가능한 ID를 모르는 경우 실제로 키 값 쌍을 수신하는 것입니다. 키가 객체마다 다르기 때문에 기술적으로 여러 개가있을 수 있습니다 (당신의 경우에는 항상 하나 일 수도 있음). 사전을 사용하여 JSON에서 (다중) 명명 된 개체 가져 오기

public class RootProduct
{
    //No package class needed
    public IDictionary<string, Package_id> Package {get; set;}
}

public class Package_id
{
    public string product_name {get; set;}
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관