小さい、固定サイズ、固定構造、固定フィールド名、JSON 文字列の逆シリアル化は簡単です。すべてのフィールドを含むクラスを定義するだけです (正しい型と名前を持ち、すべてコンパイル時に認識されます)。
入れ子になったペアの可変サイズを逆シリアル化するのは、やや困難ですが、クラス内のList<>を使用して実行できます。
しかし、コンパイル時にフィールドの名前が不明な場合はどうすればよいでしょうか? 例えば:
{
"container":{
"GD01AB491103":{
"field_id1":11,
"field_id2":12,
"field_id3":13,
"field_id4":"fourteen"
},
"DC01AB491103":{
"field_id1":21,
"field_id2":22,
"field_id3":23,
"field_id4":"twenty four"
},
"GH01AB451101":{
"field_id1":31,
"field_id2":32,
"field_id3":33,
"field_id4":"thirty four"
}
.
.
.
},
"terminator"
}
そのような文字列をデシリアライズする方法は?
(できれば.NETのJavaScriptSerializerを使用しますが、それが弱すぎる/機能しない場合は、別のものに頼る必要があるかもしれません)
編集:チャレンジの性質を明確にするために:上記の例では、クラスを定義するために:
public class ??????
{
public int field_id1 {get;set;}
public int field_id2 {get;set;}
public int field_id3 {get;set;}
public string field_id4 {get;set;}
}
最初に JSON 文字列を照会する必要があります。次に、実行時に、これらの変数名のクラス オブジェクトを含むクラス (リフレクション?) を作成しますか? あまりにも面倒に見えます...おそらくもっと健全な方法がありますか?
それとも、クラス/フィールド名は .NET のJavaScriptSerializerとは無関係であり、すべての問題は型ですか? (そしてもちろん正しい構造)