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