C#とVisual Studioの新機能で、私と一緒にいてください。DataGridViewに複雑なJSONを表示
DataGridViewを使用してJSONを表示および編集するプログラムを作成したいとします。アプリケーションは、WebからいくつかのJSONをダウンロードして(その部分を持っている)、アプリケーションで簡単に編集できるように表示します。編集が終了すると、サーバーにアップロードされます。問題は、JSONが表示される部分(おそらく重要な部分)に固執しているということです。
私はDataGridViewを使用して表示する必要があることを知りました。少なくとも、私はいくつかの検索から得た印象です。JSONをダウンロードして逆シリアル化することができました。 NET)にいくつかの単純なリストと辞書を使用しています。 JSONを非直列化してクラスに変換できるようにしたいので、より簡単にナビゲートすることができますが、ネストされた辞書や配列を使用することは非常に困難です。ここにサンプルがあります(実際のファイルは少し長くなっていますが、私はそれをカットして要点を得ています)。
{
"regular" : [
[
{
"description" : "Free E-Booklet",
"information" : "http://freeebooknotascam.com",
"contentType" : "banner",
"message" : "Free E-Booklet (NOT A SCAM!)",
"color" : "#811cca"
}
],
[
{
"description" : "Free Money!",
"information" : "http://freemoney.com",
"title" : "",
"contentType" : "web",
"thumbnail" : "http://freemoney.com/money"
}
]
],
"special" : [
{
"description" : "Hats",
"information" : "",
"title" : "",
"contentType" : "web",
"thumbnail" : "http://hats.com/mlady"
},
{
"description" : "Signup",
"information" : "",
"title" : "",
"contentType" : "web",
"thumbnail" : "http://google.com/signup/thumbnail.png"
}
]
}
が表示されたら、私はネストされたリストや辞書を持つ単純なクラスを試してみたが、JSON.NETは、それをデシリアライズし、DataGridViewの中にそれを表示する必要はありません。
これは現在デシリアライズに使用していますが、動作しますが、DataGridViewに表示されません(カウントが表示され、上下に移動できません)。 JsonConvert.DeserializeObject<Result>(json);
結果はこれだけです。
public class Result
{
public List<Dictionary<String, String>> featured;
public List<List<Dictionary<String, String>>> regular;
}
一つのビューでは、私は、例えばregular
辞書あちこちアイテムのdescription
タグを一覧表示したいです
- Regular
- Row One
- Free E-Booklet
- Row Two
- Free Money
やその他では、私がJavaScriptSerializerを使用し、それは問題ではありませんspecial
辞書
- Special
- Hats
- Signup
あなたは 'DataGridView'で表示するように何を期待していますか?それはあなたのためにリストを示すことができるので、結果をLINQを使って適切なリストに形作る必要があります。 –
@Reza Aghaei私はキー/値の残りの部分にドロップすることができる単純なリストを表示したいと思いますが、今リストの辞書の配列を取得し、リスト内の説明キーの表示をokにするだけです。 –
質問に希望する出力の例を含める方が良いでしょう。また、すべての要素が同じキーを持つので、 'Dictionaryの代わりにクラスを作成することができます。 –