我如何在c#中使用JavaScriptSerializer来解析具有未知数量的键和值的Json

本文关键字:未知数 Json 键和值 JavaScriptSerializer | 更新日期: 2023-09-27 18:03:33

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

在下面的例子中,我知道有"id"answers"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; }
}

我如何在c#中使用JavaScriptSerializer来解析具有未知数量的键和值的Json

要么反序列化到字典中,要么获取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++;
}