Я получаю следующий JSON в моем сервисе API: < /p>
{
"status": "success",
"data": {
"expense_id": "6dcf894f-ceac-44e2-8abd-9a92c80ca5df",
"description": "New Rent Buddy",
"category": "Social Life",
"total_amount": "150.00",
"paid_by": "a1b2c3d4-1234-5678-9101-abcdef123456",
"user_paid_amount": 0,
"group_members": [
{
"user_id": "2cfa8e79-bcc5-434a-86fb-ca118179de69",
"name": "AAA",
"amount_due": "24.00",
"amount_paid": "0.00",
"status": 0
},
{
"user_id": "b2c3d4e5-2345-6789-1011-bcdefa234567",
"name": "BBBB",
"amount_due": "50.00",
"amount_paid": "0.00",
"status": 0
}
]
}
}
< /code>
Когда я выхожу из журнала доступных ключей в объекте данных, в моем файле службы API я получаю следующий вывод: < /p>
["user_paid_amount", "expense_id", "paid_by", "group_members", "description", "total_amount", "category"] which is correct.
< /code>
Однако, как только я прохожу его через следующее: < /p>
let expenseDetails = try decoder.decode(ExpenseDetailsResponse.self, from: data)
< /code>
И я регистрирую, какие ключи мы получили для объекта данных снова, я получаю только следующее: < /p>
[CodingKeys(stringValue: "category", intValue: nil), CodingKeys(stringValue: "description", intValue: nil)]
Где мои другие переменные, такие как earpense_id , total_amount ?
struct ExpenseDetailsResponse: Codable {
let status: String
let data: ExpenseDetails
init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
print("Type of `container`: \(type(of: container))")
status = try container.decode(String.self, forKey: .status)
print("Available Keys in Response BEFORE DECODING: \(container.allKeys)")
let dataContainer: KeyedDecodingContainer
do {
dataContainer = try container.nestedContainer(keyedBy: ExpenseDetails.CodingKeys.self, forKey: .data)
print("Extracted `data` as Dictionary BEFORE DECODING: \(dataContainer.allKeys)")
} catch {
print("ERROR: Failed to extract raw `data` before decoding: \(error)")
throw error
}
//Decoding `data` from `dataContainer`
data = try container.decode(ExpenseDetails.self, forKey: .data)
}
}
< /code>
struct ExpenseDetails: Codable {
let expense_id: String
let description: String
let category: String
let total_amount: Double
let paid_by: String
let user_paid_amount: Double
let group_members: [GroupMember]
Подробнее здесь: https://stackoverflow.com/questions/795 ... iables-are
Невозможно расшифровать весь JSON через декодер, только выбранные переменные декодируются ⇐ IOS
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение