【发布时间】:2020-01-10 18:09:44
【问题描述】:
我有一个 JSON 对象:
"Cars": {
"Honda": {
"CRV": [
{ "index": 1, "Color": "Black" },
{ "index": 2, "Color": "White" }
],
"Civic": [
{ "index": 1, "Color": "Blue" }
]
},
"Toyota": {
"Corolla": [
{ "index": 1, "Color": "Black" }
],
"Camry": [
{ "index": 1, "Color": "Blue" }
]
},
"GM": {
"Chevrolet": {
"Cruze": [
{ "index": 1, "Color": "Blue" }
]
}
}
我必须将此信息存储在表格中。现在我正在为每个循环单独解析每个列表,如下所示:
foreach (CarInfo info in Cars.Honda.CRV)
{
//storing in table
}
foreach (CarInfo info in Cars.Honda.Civic)
{
//storing in table
}
foreach (CarInfo info in Cars.Toyota.Corolla)
{
//storing in table
}
等等。 有没有办法优化这段代码? (Given 只是一个例子,实际的 JSON 更广泛,让我写了太多的 foreach 循环)
每个汽车品牌在表格中存储信息的方法不同。
【问题讨论】:
-
创建一个可以调用三次的方法,一次是
Cars.Honda.CRV,Cars.Honda.Civic,一次是Cars.Toyota.Corolla?将循环放入该方法中... -
远离制造商和型号的特定字段。这应该在字典中。
-
您是否考虑过使用诸如 Json.NET - Newtonsoft.Json 之类的库来为您处理来自 Json 的反序列化?如果它适合您的目的,它可能允许您取消所有的 foreach 循环。
-
@Sepia,我正在使用 NewtonSoft 将 JSON 反序列化为对象。 foreach 循环中的“汽车”对象就是那个反序列化的对象。
-
啊,好吧。如果每个循环中的“存储在表中”代码都相同,那么 Jon Skeet 的解决方案将是最好的。如果它不同,那么我认为查看一些“存储在表格中”的示例会有所帮助。