2017-11-13 8 views
2

JSON을 사용하여 C#으로 작성중인 JSON이 있습니다. 내 개체에 metadata 섹션이 포함되어 있습니다. 데이터 섹션은 JSON 배열이며 다른 JSON 배열을 포함합니다. 내가 가진 문제는 내 주요 데이터 엔티티입니다. 지금 나는 그 엔티티에 대한 모든 데이터를리스트에 기록했다. 문제는 목록에서 모든 데이터를 추출하여 데이터 수준까지 옮겨야한다는 것입니다. 여기에 지금은 출력하고 무엇 : C#에서C# JSON.Net 항목을 다른 목록에 배치

{ 
    "meta": 
    { 
     //meta info here. This is static and formatted correctly. 
    } 
    "data": 
    [ 
     { 
     "main record data:" 
     [ 
      { 
      //Here is dynamically created data that I need to move. 
      } 
     ] 
     } 
    ] 
} 

내 개체 내 JSON의 메타 데이터 섹션을 정의하는 기본 클래스가 있습니다. 데이터 섹션은 List<DataModel>입니다. 그 안에 JSON의 데이터 섹션에 포함 된 각 섹션을 설정하는 다른 모든 목록이 있습니다. 필요한 목록은 조직 목록입니다.

public class JSONModel 
    { 
     [JsonProperty(Order = 1)] 
     public EntityProperties meta { get; set; } 
     [JsonProperty(Order = 2)] 
     public List<DataModel> data { get; set; } 
    } 
    public class DataModel 
    { 
     [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] 
     public List<EntityProperties> org { get; set; } 
     [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] 
     public List<EntityProperties> addresses { get; set; } 
    } 

은 내가 출력해야 할 것은 이것이다 :

{ 
    "meta": 
    { 
     //meta info here. This is static and formatted correctly. 
    } 
    "data": 
    [ 
     { 
     //Here is dynamically created data from the org list. 
     } 
    ] 
} 

내가 사용 도구는 SCRIBE 온라인이며,이 내가 구축하고 사용자 정의 커넥터입니다 여기가 응축 된 모델이다. 그것이 <EntityProperties>의 출처입니다. 이것이 저에게 제공하는 것입니다. 그런 다음 해당 항목을 내 목록에 전달하면 label: data으로 올바른 JSON 형식으로 변환됩니다. org 엔티티가 meta와 같은 정적 필드를 가지면 내 opionion에서 간단해질 것입니다. 데이터를 JObject로 가져 와서 데이터 섹션 상단에 다시 삽입 할 수 있기를 기대하지만, JSON.net을 처음 사용하기 때문에 올바른 경로에 있는지 확실하지 않습니다. 모든 입력은 크게 감사하겠습니다.

+0

JSON을 비 직렬화하고 새로운 객체를 만드는 것처럼 보입니다. 이 질문을보십시오 https://stackoverflow.com/questions/7895105/deserialize-json-with-c-sharp –

답변

0

List<DataModel> 대신에 DataModel이라는 단일 개체 만 있으면됩니다.

"org"와 "address"를 단일 객체 인스턴스로 구성하려면 각각의 단일 객체에 대한 참조를 보유하는 클래스를 만든 다음 DataModel 클래스에 해당 클래스 목록을 만듭니다.

+0

이 경우에는 하나 이상의 데이터 섹션이있을 수 있습니다. 이것은 메타 섹션에 명시되어 있습니다. 따라서 목록 데이터 모델이 필요합니다. 각 데이터 모델에는 약 40 개의 속성이있는 조직 데이터가 먼저 있습니다. 그 40 attrubates 항상 전송되지 않습니다. 1, 5, 20 또는 40을 보낼 수 있습니다. 목록에로드 한 후 API가 []가 포함 된 태그 앞에 org 태그가있는 것을 좋아하지 않는다는 사실을 발견했습니다. 주소는 조직이 하나 이상의 주소를 가질 수있는 목록이어야하며받는 API가 구조화하기를 원하기 때문에 목록이어야합니다. –

+0

좋아, 당신은 새로운 클래스의 목록을 보유 할 수있는 DataModel을 만들 수있다. 실제 org에 대한 단일 EntityProperties 객체를 보유하고있는 OrgClass와 조직에 포함 된 주소에 대한 List 를 말할 수있다. 데이터 모델의 문제는 원본 Dataset 내에 2 개의 목록이있어서 원본 (데이터) 배열 내에 2 개의 JSON 배열을 생성한다는 것입니다. 내가 읽은 것에서 우리가 원하는 것을 얻지 못했습니다. 객체의 단일 배열이 필요하면 DataModel에 단일 객체 참조 만 포함시켜야합니다. 모든 목록 에 대해 JSON.Net은 새 배열을 만듭니다. –

+0

그 말은, OrgClass를 생성하고 데이터 모델에 Org와 List의 목록을위한 단일 객체를 보유하게 만듭니다. –