gpt4 book ai didi

c# - 解析动态 JSON

转载 作者:太空宇宙 更新时间:2023-11-03 17:30:10 25 4
gpt4 key购买 nike

我收到一个 JSON 文件,其中包含一个文件列表,每个文件都有一个数字代表它包含的总行数。文件名会随着时间的推移而改变。 JSON.NET 是否提供一种机制来处理这种情况?

在下面的示例 JSON 中,我对 noOfProductsByFile 下的项目特别感兴趣。文件列表是可变的,我需要通过某种类型的动态对象来使用它们。

{
"noOfProductsByFileType" : {
"rdi_product_stuff" : 41228,
"rdi_product_junk" : 62519,
"rdi_product_otherStuff" : 165023,
"rdi_product_bobsJunk" : 1289
},
"startTime" : "20160907050000",
"endTime" : "20160907052713",
"timeTaken" : "27 minutes and 13 seconds",
"noOfProductsBySecurityType" : {
"AGENCIES" : 41228,
"ASTBK" : 50991,
"TSYCURV" : 78
},
"noOfProductsByFile" : {
"rdi_product_stuff_1_of_1.json" : 41228,
"rdi_product_junk_1_of_2.json" : 60219,
"rdi_product_junk_2_of_2.json" : 2300,
"rdi_product_myStuff_1_of_2.json" : 147690,
"rdi_product_myStuff_2_of_2.json" : 17333,
"rdi_product_test_1_of_1.json" : 1289
},
"noOfProducts" : 1925914
}

最佳答案

有几个选项可供使用。这是一个使用 ExpandObject 的对象

dynamic dynData = JsonConvert.DeserializeObject<ExpandoObject>(jsonString, new ExpandoObjectConverter());

然后您可以像引用普通对象一样引用这些字段:

dynData.noOfProductsByFileType.rdi_product_stuff

如果您需要处理可能存在或不存在的字段,可以将 ExpandoObjects 转换为 IDictionary 并按如下方式引用字段:

((IDictionary<string,object>)dynData)["noOfProductsByFileType"]

分配给 IDictionary 类型并遍历属性或测试属性是否存在

var dictData = (IDictionary<string,object>)dynData;
var noOfProductsByFileTypeDict = (IDictionary<string,object>)dynData.noOfProductsByFileType; // objects within objects

属性测试

dictData.containsKey("testprop"); // test for a property - testprop

或迭代

foreach (KeyValuePair<string, int> pair in noOfProductsByFileTypeDict) ... //iterate

关于c# - 解析动态 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42165378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com