1

如果我有一个带有未知数量的键和值的 Json 字符串。如何在 c# 中将所有值获取到数组或对象中?

在下面的示例中,我知道有“id”和“index”字段。如果我不知道现场的钥匙怎么办?

在另一种情况下,如果键的数量很大以至于我无法声明变量怎么办?

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

我像这样反序列化上面的Json。上面提到的两种情况呢?

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 回答