2017-02-11 16 views
0

Newtonsoft.Jsonを使用して、JSONからcsvにデシリアライズしようとしていますが、失敗しました。私はJSONのスキーマを適切に定義することができず、失敗しました。入れ子JSONをC#でcsvに変換する方法は?

入力JSON:

{ 
"2017-02-11": 
    { 
    "Table1": [ 
    { 
     "code": "code day1.1.1", 
     "no": "no day1.1.1" 
    } 
    ], 
    "Table2": [ 
    { 
     "code": "code day1.2.1", 
     "no": "no day1.2.1" 
    }, 
    { 
     "code": "code day1.2.2", 
     "no": "no day1.2.2" 
    } 
    ] 
}, 
"2017-02-12": 
    { 
    "Table1": [ 
    { 
     "code": "code day2.1.1", 
     "no": "no day2.1.1" 
    }, 
    { 
     "code": "code day2.1.2", 
     "no": "no day2.1.2" 
    } 
    ], 
    "Table2": [ 
    { 
     "code": "code day2.2.1", 
     "no": "no day2.2.1" 
    } 
    ] 
} 
} 

出力CSV:

,,code,no 
2017-02-11,Table1,code day1.1.1,no day1.1.1 
,Table2,code day1.2.1,no day1.2.1 
,,code day1.2.2,no day1.2.2 
2017-02-12,Table1,code day2.1.1,no day2.1.1 
,,code day2.1.2,no day2.1.2 
,Table2,code day2.2.1,no day2.2.1 

私は、それは例外を返し

DataSet dataSet = Newtonsoft.Json.JsonConvert.DeserializeObject<DataSet>(content). 

を使用しようとします。

+0

「var dataSets = JsonConvert.DeserializeObject >(content);」を実行するだけで、そのJSONをIDictionary にデシリアライズできます。サンプル[フィドル](https://dotnetfiddle.net/ZIMrU0)。それはあなたの質問に答えるか、CSVファイルを書く方法も尋ねていますか? – dbc

答えて

0

オブジェクトを逆シリアル化する場合、戻り値の型にはJSONのオブジェクト名のプロパティと一致するプロパティが必要です。

あなたのJSONはオブジェクト名として日付を使用していますが、これらの値は動的であることを意味します。彼らは動的であるならば、私はあなたが新しいデータセット型に各動的からの検索結果をバインドすることができ、そこから、ループスルーすることができ、動的リストタイプを返し

var dynamicResults = JSON.Decode(content); 

デコードを使用してお勧めします。

関連する問題