Здравствуйте товарищи!
У меня возник непреодолимая проблема, как закодировать полезную нагрузку для запроса на сервер. Объект должен выглядеть следующим образом:
{
"filter": {
"conditions": [
{"key": "id_wbs", "values": [1293548]},
{"key": "id_object", "values": []},
{"key": "id", "values": [""]},
{"key": "period", "values": ["month"]},
{"key": "type_chart", "values": [""]},
{"key": "tzr_type", "values": ["monthly"]},
{"key": "type_of_work", "values": []},
{"key": "id_group_object", "values": []},
{"key": "report_date", "values": [],
"value_derived": {
"columns": "max_report_date",
"bo_id": 100006,
"filter": {
"conditions": [{"key": "id_wbs", "values": [1293548]}, {"key": "operation", "values": [""]}]
}
}
}]
},
}
Проблема в ключах “values”. В зависимости от значения ключа “key” они могут быть или массивом целых чисел, или массивом строки, или массивом дат. Откровенно говоря я запутался с этим и сейчас в тупике. Буду благодарен за любую помощь
Предварительная модель данных выглядит так:
struct CSITableRequest: Encodable {
let filter: TableFilter
}
struct TableFilter: Encodable {
let conditions: [TableFilterConditionItem]
}
struct TableFilterConditionItem: Encodable {
let key: TableFilterConditionKey
let values: [String] // Это проблемный ключ, который может быть и массивом Int, и массивом String, и массивом Date
let value_derived: TableValueDerived?
}
enum TableFilterConditionKey: String, Encodable {
case id_wbs
case id_object
case id
case period
case type_chart
case tzr_type
case type_of_work
case id_group_object
case report_date
case operation
}
struct TableValueDerived: Encodable {
let columns: String
let bo_id: Int
let filter: TableFilter
}