Скажем, у вас есть конечная точка, которая возвращает JSON-ответ с динамическим списком проиндексированных столбцов в следующем формате:
"columnNames": [
"date",
"value",
"someOtherValue"
],
"data": [
[
"2019-05-29",
1.23,
2.34
],
[
"2019-05-28",
0.20,
1.34
],
[
"2019-05-27,
2.99,
1.94
]
]
Каков наиболее оптимальный способ десериализации такого ответа?Я мог бы попытаться сопоставить его с некоторым классом, который будет содержать и columnNames, и данные, а затем просто отобразить его, более или менее так (псевдокод):
var apiResponseContent = await response.Content.ReadAsAsync<ApiResponse>();
foreach(var responseData in apiResponseContent.data) {
var model = new Model();
model.date = responseData[apiResponseContent.columnNames.First(v => v == "date").index]
..
}
Но это, кажется, такое типичноесценарий, что должна быть более эффективная альтернатива, которая не склонна ломаться, если ответ конечной точки изменяется.Конечно, я мог бы использовать отражение и создать метод расширения для автоматического сопоставления столбцов с классами, но мне кажется странным сделать это.