gpt4 book ai didi

ios - 无法解析api响应

转载 作者:行者123 更新时间:2023-11-29 05:53:49 26 4
gpt4 key购买 nike

我有一个 api 响应,看起来像这样...我正确地从 api 获得了响应..

{
"status": "success",
"data": {
"meta": {
"url": "htt..://www.abc.com",
"title": “ASD - Log In or Sign Up",
"description": "Create an account or log in….”,
"display_url": "htt..://www.abc.com/",
"video_url": "",
"image": "htt..://www.asd.com/images/asds_325x325.png",
"img_wxh": "325x325"
}
}
}

我用来解析这些数据的模型类是这样给出的..

struct MetaData: Codable {
let status: String?
let data: DataClass?
}

struct DataClass: Codable {
let meta: Meta
}

struct Meta: Codable {
let url: String
let title, description: String
let displayURL: String
let videoURL: String
let image: String
let imgWxh: String

enum CodingKeys: String, CodingKey {
case url = "url"
case title = "title"
case description = "description"
case displayURL = "display_url"
case videoURL = "video_url"
case image = "image"
case imgWxh = "img_wxh"
}
}

正在进行的 api 调用如下所示...

 WebServiceClient.shared.getMeta(withParameters: parameters) { [weak self] (isSuccess, result) in
guard let `self` = self else { return }
if isSuccess, result != nil {


if let jsonData = try? JSONSerialization.data(withJSONObject: result as Any, options: []) {
do {
let metaData = try JSONDecoder().decode(MetaData.self, from: jsonData)


self.metaDataImageView.sd_setImage(with: URL(string: metaData.data?.meta.image ?? ""), completed: nil)
self.urlLabel.text = metaData.data?.meta.url
self.titleLabel.text = metaData.data?.meta.title
self.urlDescriptionLabel.text = metaData.data?.meta.description

} catch {
print("error \(error)")
}
}
}

但是我得到的所有数据都为零...可能是什么原因..?

我在metaData中什么也没得到...

enter image description here

最佳答案

这是我尝试解析您的数据的代码

struct MetaData: Codable {
let status: String?
let data: DataClass?
}

struct DataClass: Codable {
let meta: Meta
}

struct Meta: Codable {
let url: String
let title, description: String
let displayURL: String
let videoURL: String
let image: String
let imgWxh: String

enum CodingKeys: String, CodingKey {
case url = "url"
case title = "title"
case description = "description"
case displayURL = "display_url"
case videoURL = "video_url"
case image = "image"
case imgWxh = "img_wxh"
}
}

let jsonString = """
{
"status": "success",
"data": {
"meta": {
"url": "htt..://www.abc.com",
"title": "ASD - Log In or Sign Up ",
"description": "Create an account or log in….",
"display_url": "htt..://www.abc.com/",
"video_url": "",
"image": "htt..://www.asd.com/images/asds_325x325.png",
"img_wxh": "325x325"
}
}
}
"""

let jsonData = jsonString.data(using: .utf8)
do {
let parsedData = try JSONDecoder().decode(MetaData.self, from: jsonData!)
print(parsedData)

} catch {
print(error.localizedDescription)
}

而且它有效。

enter image description here

此外,您的 json 存在一些问题,因此请确保验证您的 json 格式。您可以使用jsonlint.com用于验证 json。

关于ios - 无法解析api响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55396336/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com