私のJSONは次のとおりです。
{"t":"1339886","a":true,"data":[],"Type":[['Ants','Biz','Tro']]}
Newtonsoft JSON.NET C#用の逆シリアル化ライブラリを見つけました。私はそれを次のように使用しようとしました:
object JsonDe = JsonConvert.DeserializeObject(Json);
JsonDe
オブジェクトにアクセスして、すべての「タイプ」データを取得するにはどうすればよいですか?ループで試してみましたが、オブジェクトに列挙子がないため動作しません。
JSONにあるフィールドを保持するクラスを実装できます
class MyData
{
public string t;
public bool a;
public object[] data;
public string[][] type;
}
次に、DeserializeObjectの汎用バージョンを使用します。
MyData tmp = JsonConvert.DeserializeObject<MyData>(json);
foreach (string typeStr in tmp.type[0])
{
// Do something with typeStr
}
ドキュメント: JSONのシリアル化とデシリアライズ
Json.NET 4.0リリース1では、ネイティブ 動的 がサポートされています。クラスを宣言する必要はなく、dynamic
を使用するだけです:
dynamic jsonDe = JsonConvert.DeserializeObject(json);
すべてのフィールドが使用可能になります。
foreach (string typeStr in jsonDe.Type[0])
{
// Do something with typeStr
}
string t = jsonDe.t;
bool a = jsonDe.a;
object[] data = jsonDe.data;
string[][] type = jsonDe.Type;
dynamic を使用すると、データを保持するために特定のクラスを作成する必要がありません。
Newtonsoft Documentation に従って、次のように匿名オブジェクトに逆シリアル化することもできます。
var definition = new { Name = "" };
string json1 = @"{'Name':'James'}";
var customer1 = JsonConvert.DeserializeAnonymousType(json1, definition);
Console.WriteLine(customer1.Name);
// James