【发布时间】:2021-02-15 22:54:08
【问题描述】:
我有这个 JSON 字符串:
{
"countries": [
{
"countryCode": "AR",
"country": "Argentina"
},
{
"countryCode": "BR",
"country": "Brazil"
}
]
}
还有这个 Country 类和国家列表:
List<Country> countries { get; set; }
class Country
{
public string country { get; set; }
public string countryCode { get; set; }
}
我需要创建一个包含国家代码和名称的二维对象数组:
propVal[0, 0] = "AR";
propVal[0, 1] = "Argentina";
propVal[1, 0] = "BR";
propVal[1, 1] = "Brazil";
.
.
.
现在我正在“手动”遍历国家列表并构建对象数组:
int row = 0;
foreach (Country country in countries)
{
propVal[row, 0] = country.countryCode;
propVal[row, 1] = country.country;
row++;
}
远景是有一个通用的方式,适用于其他 JSON,假设有 3 个或更多属性,并产生一个 x 维对象数组。
有没有一种 LINQ 方法可以做到这一点?我知道this 线程,它处理一个对象属性并且LINQ 方法是countries.Select(x=>x.country).ToArray(),但在我的情况下需要多个属性。
感谢您的帮助!
【问题讨论】:
-
这似乎是一个 X/Y 问题。为什么你需要一个多维数组,而不是一个类(国家)列表
-
因为生成的多维对象数组会写入Excel表格。
-
你可以使用反射来做到这一点。但它不会很漂亮......使用DataTable怎么样?
-
没有内置的 linq 方法来生成多维数组 - 这有一个很好的理由:数组的维数必须在编译时知道 - 所以你不能有一个方法可以返回一个任意维数的数组。方法可以做到这一点的唯一方法是返回
dynamic或object- 这为各种问题打开了大门 - 主要问题是应该是编译时错误的错误被推送到运行时。 -
正常序列化,然后循环填充二维数组。你也可以喜欢 JObject,但我不会打扰。像往常一样序列化它