1

キーと値の数が不明なJson文字列がある場合。C#ですべての値を配列またはオブジェクトに取得するにはどうすればよいですか?

次の例では、「id」フィールドと「index」フィールドがあることがわかります。フィールドのキーを知らなかった場合はどうなりますか?

別のコンテキストでは、キーの数が多く、変数を宣言できない場合はどうなりますか?

[{"id":"449342","index":0},{"id":"449343","index":1}]

上記のJsonをこのように逆シリアル化します。上記の2つのコンテキストはどうですか?

JavaScriptSerializer js = new JavaScriptSerializer();
        AllLiTags[] Tags = js.Deserialize<AllLiTags[]>(LiOrder);

public class AllLiTags
{
    public string Id { get; set; }
    public string Index { get; set; }
}
4

1 に答える 1

1

辞書に逆シリアル化するか、この種の使用法をより重視したnugetパッケージJson.NETドキュメント)を入手してください。

辞書への逆シリアル化は次のようになります。

var tags = js.Deserialize<Dictionary<string, string>[]>(LiOrder);
string secondOrderIndex = tags[1]["index"];

型情報(文字列に変換された数値など)が失われ、ネストされたオブジェクトを処理できるとは思えません。

Json.NETの使用は次のようになります。

var tags = JArray.Parse(LiOrder);
string secondOrderIndex = tags[1]["index"].GetValue<string>();
int idx = 0;
foreach (var order in tags) {
    foreach (var prop in order) {
        Console.WriteLine("Order {0}'s {1} property has value {2}",
                          idx,
                          prop.Name,
                          prop.Value.ToString());
    }
    idx++;
}
于 2013-03-13T04:58:41.793 に答える