2017-11-13 17 views
2

私はJSON.netを使用して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形式に変換します。組織エンティティがメタのような静的フィールドを持つことになっていた場合、私のopionionでは単純になります。データをJObjectにプルしてからデータセクションの先頭に挿入することができればと思っていますが、これはJSON.netで初めてのことですが、正しいパスかどうかはわかりません。どんな入力も非常に高く評価されます。

+0

JSONを逆シリアル化して新しいオブジェクトを作成しようとしているようです。この質問を見てみましょう。https://stackoverflow.com/questions/7895105/deserialize-json-with-c-sharp –

答えて

0

List<DataModel>の代わりに、DataModelの1つのオブジェクトだけを持つ必要があります。

"org"と "address"を1つのオブジェクトインスタンスにまとめる場合は、それぞれの単一オブジェクトへの参照を保持するクラスを作成し、DataModelクラスにそのクラスのリストを作成します。

+0

この場合、複数のデータセクションが存在する可能性があります。これはメタセクションで指定されています。だから私はリストデータモデルが必要です。各データモデルには、最初に約40のアトリビュートである組織データがあります。それらの40のattrubatesは常に送られるわけではありません。 1、5、20、40を送ることができました。私はそれをリストにロードし、その後にAPIがorgタグを持つのが好きではないことを発見しました。アドレスについては、orgは複数のアドレスを持つことができるため、これはリストである必要があります。これは、受信側のAPIが構造化を望む方法です。 –

+0

これは、実際の組織に対して単一のEntityPropertiesオブジェクトを保持するOrgClassと、組織に含まれるアドレスに対してList という新しいクラスのリストを保持するDataModelを作成する可能性がありますか? データモデルの問題は、元のデータセット内に2つのリストがあり、元の(データ)配列内に2つのJSON配列が生成されることです。私が読んだところから、私たちがここで欲しいものではありません。オブジェクトの単一の配列が必要な場合は、DataModelに単一のオブジェクト参照のみを含める必要があります。すべてのList に対して、JSON.Netは新しい配列を作成します。 –

+0

これは、OrgClassを作成して、OrgとAddress Listのための単一のオブジェクトをデータモデルに保持するようにするだけです。 –

関連する問題