我解析json没什么问题
我需要返回der_link
值
我执行此代码
struct Welcome: Codable {
let statusCode: Int
let message: String
let content: Content?
}
struct Content: Codable {
let course: Course
let lesson: Lesson
}
struct Course: Codable {
let id: Int
let slug, title: String
let passed: Int
enum CodingKeys: String, CodingKey {
case id, slug, title
case passed
}
}
struct Lesson: Codable {
let id, position: Int
let title, slug, rules, words: String
let image: String
let passed: Int
let der_link: String?
enum CodingKeys: String, CodingKey {
case id, position, title, slug, rules, words, image
case passed
case der_link
}
}
这是我的json
{
"statusCode": 200,
"message": "Информация об уроке",
"content": {
"course": {
"id": 1,
"slug": "kurs-a1",
"title": "Курс А1",
"can_access": 1,
"passed": 1,
"sections": []
},
"lesson": {
"id": 3,
"position": 2,
"title": "Танысу",
"slug": "tanysu",
"rules": "<p align=\"center\"><strong><span lang=\"KZ\">-Бұл кім?</span></strong></p>\r\n<p align=\"center\"><strong><span lang=\"KZ\">-Бұл менің досым.</span></strong></p>\r\n<p><span lang=\"KZ\">В казахском языке существуют притяжательные окончания существительных, которые показывают принадлежность предмета, явления первому, второму, третьему лицу. К словам обозначающим названия предмета обладания, прибавляются окончания притяжетельной формы, а слова, обозначающие название обладателя предмета, отвечает на вопрос КІМНІҢ? НЕНІҢ?</span></p>\r\n<p><span lang=\"KZ\">Категория принадлежности образуется путем прибавления к сущестительным в единственном и множественном числе следующих окончаний:</span></p>\r\n<table border=\"1\" width=\"442\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"339\">\r\n<p><span lang=\"KZ\">Менің (мой) ... </span>–ым/<span lang=\"KZ\">ім/м</span><span lang=\"KZ\"> </span></p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td valign=\"top\" width=\"339\">\r\n<p><span lang=\"KZ\">Сенің (твой) ... +ың/ің/ң</span><span lang=\"KZ\"> </span></p>\r\n<p><span lang=\"KZ\">Сіздің(Ваш,Ваша,Ваши) ...</span></p>\r\n<p><span lang=\"KZ\"> ... ыңыз/іңіз</span></p>\r\n<p><span lang=\"KZ\"> ...ңыз/ңіз </span><span lang=\"KZ\"> </span></p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td valign=\"top\" width=\"339\">\r\n<p><span lang=\"KZ\">Оның ...–сы/сі/</span></p>\r\n<p><span lang=\"KZ\"> ...–ы/і</span></p>\r\n</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n<p> </p>\r\n<p style=\"text-align: center;\"><span lang=\"KZ\">Есте сақтаңыз!</span></p>\r\n<p align=\"center\"><span lang=\"KZ\">Запомните!</span></p>\r\n<p align=\"center\"> </p>\r\n<table border=\"1\" width=\"548\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td valign=\"top\" width=\"554\">\r\n<p align=\"center\"><span lang=\"KZ\">Местоимения менің, сенің и т.д. часто в речи опускаются, поскольку само окончание выполняет их функции. Русское словосочетание мой друг</span></p>\r\n<p align=\"center\"><span lang=\"KZ\">по-казахски передается как досым или менің досым.</span></p>\r\n</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n<p> </p>\r\n<p><span lang=\"KZ\">Менің</span><span lang=\"KZ\"> - атым, есімім, аты-жөнім, тегім, жұмысым, жаңалығым</span></p>\r\n<p><span lang=\"KZ\">Сенің</span><span lang=\"KZ\"> – атың, есімің, аты-жөнің, тегің, жұмысың, жаңалығың</span></p>\r\n<p><span lang=\"KZ\"> </span></p>\r\n<p><span lang=\"KZ\">Менің </span>– мой, моя, мое, меня, у меня</p>\r\n<p><span lang=\"KZ\">Менің ....... </span>+ ым/<span lang=\"KZ\">ім/м</span></p>\r\n<p><span lang=\"KZ\"> </span></p>\r\n<p>- <span lang=\"KZ\">ым – </span><span lang=\"KZ\">добавляется после согласных звуков, где последний слог твердый гласный звук (а, о, ы, ұ, (у, и))</span></p>\r\n<p>- <span lang=\"KZ\">ім– </span><span lang=\"KZ\">добавляется после согласных звуков, где последний слог мягкий гласный звук (ә, ө, і, ү,е, (у, и))</span></p>\r\n<p>- <span lang=\"KZ\">м – </span><span lang=\"KZ\">добавляется после гласных звуков,не зависимо мягкие или твердые гласные </span></p>\r\n<p> </p>\r\n<p><span lang=\"KZ\">Сенің </span>– <span lang=\"KZ\">тв</span>ой, <span lang=\"KZ\">тво</span>я, <span lang=\"KZ\">тв</span>ое, <span lang=\"KZ\">теб</span>я, у <span lang=\"KZ\">теб</span>я</p>\r\n<p><span lang=\"KZ\">Сенің ....... + ың/ің/ң</span></p>\r\n<p><span lang=\"KZ\">- ың – </span><span lang=\"KZ\">добавляется после согласных звуков, где последний слог твердый гласный звук (а, о, ы, ұ, (у, и))</span></p>\r\n<p>- <span lang=\"KZ\">ің – </span><span lang=\"KZ\">добавляется после согласных звуков, где последний слог мягкий гласный звук (ә, ө, і, ү,е, (у, и))</span></p>\r\n<p>- <span lang=\"KZ\">ң – </span><span lang=\"KZ\">добавляется после гласных звуков,не зависимо мягкие или твердые гласные </span></p>\r\n<p><span lang=\"KZ\"> </span></p>\r\n<p><span lang=\"KZ\">Сіздің </span>– <span lang=\"KZ\">Ваш, Ваше, Ваша, Вас, у вас</span></p>\r\n<p><span lang=\"KZ\">Сіздің ....... + ыңыз/іңіз/ңыз/ңіз</span></p>\r\n<p><span lang=\"KZ\">- ыңыз – </span><span lang=\"KZ\">добавляется после согласных звуков, где последний слог твердый гласный звук (а, о, ы, ұ, (у, и))</span></p>\r\n<p>- <span lang=\"KZ\">іңіз – </span><span lang=\"KZ\">добавляется после согласных звуков, где последний слог мягкий гласный звук (ә, ө, і, ү,е, (у, и))</span></p>\r\n<p>- <span lang=\"KZ\">ңыз – </span><span lang=\"KZ\">добавляется после твердых гласных (а, о, ы, ұ, (у, и))</span></p>\r\n<p>- <span lang=\"KZ\">ңіз – </span><span lang=\"KZ\">добавляется после мягких гласных (ә, ө, і, ү, (у, и))</span></p>\r\n<p> </p>\r\n<p><span lang=\"KZ\">Оның </span>– <span lang=\"KZ\">его/ее, у него/ у нее</span></p>\r\n<p><span lang=\"KZ\">Оның ....... + ы/і/сы/сі</span></p>\r\n<p>- <span lang=\"KZ\">ы – </span><span lang=\"KZ\">добавляется после согласных звуков, где последний слог твердый гласный звук (а, о, ы, ұ, (у, и))</span></p>\r\n<p>- <span lang=\"KZ\">і – </span><span lang=\"KZ\">добавляется после согласных звуков, где последний слог мягкий гласный звук (ә, ө, і, ү,е, (у, и))</span></p>\r\n<p>- <span lang=\"KZ\">сы – </span><span lang=\"KZ\">добавляется после твердых гласных (а, о, ы, ұ, (у, и))</span></p>\r\n<p>- <span lang=\"KZ\">сі – </span><span lang=\"KZ\">добавляется после мягких гласных (ә, ө, і, ү, (у, и))</span></p>\r\n<p> </p>\r\n<p align=\"center\"><strong><span lang=\"KZ\">ҮЛГІ:</span></strong></p>\r\n<p align=\"center\"><strong><span lang=\"KZ\">ОБРАЗЕЦ:</span></strong></p>\r\n<p><span lang=\"KZ\">Менің ат + ым (есім+ім) </span></p>\r\n<p><span lang=\"KZ\">Сенің ат + ың (есім+ің) </span></p>\r\n<p><span lang=\"KZ\">Сіздің ат + ыңыз (есім+іңіз) </span></p>\r\n<p><span lang=\"KZ\">Оның ат+ы(есім+і) </span></p>",
"words": "<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\r\n<tbody>\r\n<tr>\r\n<td colspan=\"3\" valign=\"top\" width=\"566\">\r\n<p align=\"center\"><strong><span lang=\"KZ\">ІІ Танысу</span></strong></p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td valign=\"top\" width=\"32\">\r\n<p>1</p>\r\n</td>\r\n<td valign=\"top\" width=\"266\">\r\n<p><span lang=\"KZ\">Аты</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"267\">\r\n<p>Имя</p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td valign=\"top\" width=\"32\">\r\n<p>2</p>\r\n</td>\r\n<td valign=\"top\" width=\"266\">\r\n<p><span lang=\"KZ\">Тегі</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"267\">\r\n<p>Фамилия</p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td valign=\"top\" width=\"32\">\r\n<p>3</p>\r\n</td>\r\n<td valign=\"top\" width=\"266\">\r\n<p><span lang=\"KZ\">Аты-жөні</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"267\">\r\n<p>Имя, отчество</p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td valign=\"top\" width=\"32\">\r\n<p>5</p>\r\n</td>\r\n<td valign=\"top\" width=\"266\">\r\n<p><span lang=\"KZ\">Аты-жөніңіз кім?</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"267\">\r\n<p>Как Ваша фамилия, имя и отчество?</p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td valign=\"top\" width=\"32\">\r\n<p><span lang=\"KZ\">6</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"266\">\r\n<p><span lang=\"KZ\">Аты-жөнің кім?</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"267\">\r\n<p>Как твоя фамилия, имя и отчество?</p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td valign=\"top\" width=\"32\">\r\n<p><span lang=\"KZ\">7</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"266\">\r\n<p><span lang=\"KZ\">Менің</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"267\">\r\n<p>Мой, моя, мое</p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td valign=\"top\" width=\"32\">\r\n<p><span lang=\"KZ\">8</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"266\">\r\n<p><span lang=\"KZ\">Сіздің</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"267\">\r\n<p>Ваш, Ваша, Ваше</p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td valign=\"top\" width=\"32\">\r\n<p><span lang=\"KZ\">9</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"266\">\r\n<p><span lang=\"KZ\">Сенің</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"267\">\r\n<p>Твой, твоя, твое</p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td valign=\"top\" width=\"32\">\r\n<p><span lang=\"KZ\">10</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"266\">\r\n<p><span lang=\"KZ\">Оның</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"267\">\r\n<p>Его, ее, у него</p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td valign=\"top\" width=\"32\">\r\n<p>11</p>\r\n</td>\r\n<td valign=\"top\" width=\"266\">\r\n<p><span lang=\"KZ\">Кешіріңіз</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"267\">\r\n<p>Извините</p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td valign=\"top\" width=\"32\">\r\n<p>12</p>\r\n</td>\r\n<td valign=\"top\" width=\"266\">\r\n<p><span lang=\"KZ\">Кешір</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"267\">\r\n<p>Извини</p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td valign=\"top\" width=\"32\">\r\n<p>13</p>\r\n</td>\r\n<td valign=\"top\" width=\"266\">\r\n<p><span lang=\"KZ\">Атыңыз кім?</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"267\">\r\n<p>Как Вас зовут?</p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td valign=\"top\" width=\"32\">\r\n<p>14</p>\r\n</td>\r\n<td valign=\"top\" width=\"266\">\r\n<p><span lang=\"KZ\">Атың кім?</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"267\">\r\n<p>Как тебя зовут?</p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td valign=\"top\" width=\"32\">\r\n<p><span lang=\"KZ\">15</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"266\">\r\n<p><span lang=\"KZ\">Қандай жаңалығыңыз бар?</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"267\">\r\n<p>Что нового (у Вас)? (уваж. форм.)</p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td valign=\"top\" width=\"32\">\r\n<p><span lang=\"KZ\">16</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"266\">\r\n<p><span lang=\"KZ\">Қандай жаңалығың бар?</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"267\">\r\n<p>Что нового (у тебя)? (прост. форм.)</p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td valign=\"top\" width=\"32\">\r\n<p><span lang=\"KZ\">17</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"266\">\r\n<p><span lang=\"KZ\">Жұмысыңыз қалай?</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"267\">\r\n<p>Как работа? (уваж. форм.)</p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td valign=\"top\" width=\"32\">\r\n<p><span lang=\"KZ\">18</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"266\">\r\n<p><span lang=\"KZ\">Жұмысың қалай?</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"267\">\r\n<p>Как работа? (прост. форм.)</p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td valign=\"top\" width=\"32\">\r\n<p><span lang=\"KZ\">19</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"266\">\r\n<p><span lang=\"KZ\">Танысып қой</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"267\">\r\n<p>Познакомься (прост. форм.)</p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td valign=\"top\" width=\"32\">\r\n<p><span lang=\"KZ\">20</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"266\">\r\n<p><span lang=\"KZ\">Танысып қойыңыз</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"267\">\r\n<p>Познакомьтесь (уваж. форма, ед. чис.)</p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td valign=\"top\" width=\"32\">\r\n<p><span lang=\"KZ\">21</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"266\">\r\n<p><span lang=\"KZ\">Танысып қояйық!</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"267\">\r\n<p>Давайте познакомимся (мн. ч.)</p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td valign=\"top\" width=\"32\">\r\n<p><span lang=\"KZ\">22</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"266\">\r\n<p><span lang=\"KZ\">Танысқаныма қуаныштымын</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"267\">\r\n<p>Рад/а знакомству</p>\r\n</td>\r\n</tr>\r\n<tr>\r\n<td valign=\"top\" width=\"32\">\r\n<p><span lang=\"KZ\">23</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"266\">\r\n<p><span lang=\"KZ\">Мен де қуаныштымын</span></p>\r\n</td>\r\n<td valign=\"top\" width=\"267\">\r\n<p>Я тоже рад/рада</p>\r\n</td>\r\n</tr>\r\n</tbody>\r\n</table>\r\n<p> </p>",
"image": "https://tilqural.kz/assets/img/default-lesson-icon.png",
"can_access": 1,
"passed": 1,
"der_link": "https://tilqural.kz/files/ders/1544698668/index_TINCAN.html?endpoint=https%3A%2F%2Flrs.panama.kz%2Fdata%2FxAPI%2F&auth=ZTU5Zjg0Nzk4ZDYxMjE0YmQ5ZDEyZDk0YmVkNmZlOTAyYzIzYmM0YzozNzE4NjgzMzA1MmEyNDlkOTlhYjVkNjg1ODViMjJmNTg4MGU5ODU3&actor=%7B%22name%22%3A%5B%22%D0%92%D0%B0%D1%81%D0%B8%D0%BB%D1%8C%D0%B5%D0%B2+%D0%92%D0%B8%D1%82%D0%B0%D0%BB%D0%B8%D0%B9%22%5D%2C%22mbox%22%3A%5B%22thedexire%40mail.ru%22%5D%7D&activity_id=https%3A%2F%2Ftilqural.kz%2Fru%2Flesson%2Ftanysu&unit_id=lesson_3"
}
}
}
但der_link
总是返回nil
为什么?
请帮我
谢谢
var arrData1 = [Content]()
var lang = UserDefaults.standard.string(forKey: "lang")
var user = UserDefaults.standard.string(forKey: "user_id")
func getreq(){
let user_id = user!
let lang_id = lang!
let hash_salt = "cX0YIsQlZQsLhoFOLEkw"
let input_hash = "\(lang_id)3\(user_id)\(hash_salt)"
let digest = input_hash.utf8.md5
let md5 = digest.rawValue
print(lesson_id)
let string = "https://tilqural.kz/api/v1/education/lesson?lesson_id=3"
let url = NSURL(string: string)
let request = NSMutableURLRequest(url: url! as URL)
request.setValue(md5, forHTTPHeaderField: "hash")
request.setValue("application/x.LMS.v1+json", forHTTPHeaderField: "Accept")
request.setValue(user_id, forHTTPHeaderField: "user")
request.setValue(lang_id, forHTTPHeaderField: "language")
request.httpMethod = "GET"
let session = URLSession.shared
let mData = session.dataTask(with: request as URLRequest) { (data, response, error) -> Void in
guard let data = data else { return }
do {
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
let data_new = try decoder.decode(Welcome.self, from: data)
DispatchQueue.main.async {
print("It is derLink")
print("\(String(describing: data_new.content?.lesson.der_link))" )
print("\(String(describing: data_new.content?.lesson))" )
}
} catch {
print("Error in CheckNew is : \n\(error)")
}
}
mData.resume()
}
答案 0 :(得分:1)
您已使用convertFromSnakeCase
:
decoder.keyDecodingStrategy = .convertFromSnakeCase
因此,der_link
被转换为derLink
。您的Lesson
结构体没有derLink
属性,因此该键的值将被忽略。
您应该:
derLink
,或; decoder.keyDecodingStrategy = .convertFromSnakeCase
答案 1 :(得分:0)
将设置keyDecodingStrategy
设置为.convertFromSnakeCase
,因为您的属性命名为der_link
,并且此策略将键der_link
转换为derLink
,因此您的der_link
属性未分配并且停留在nil
decoder.keyDecodingStrategy = .convertFromSnakeCase // `der_link` --> `derLink`
...或重命名您的财产
let derLink = String?