gpt4 book ai didi

ios - 我正在尝试使用 Swift Codable 从 subreddit 解析 JSON。为什么我的对象返回零?

转载 作者:行者123 更新时间:2023-11-28 05:39:34 26 4
gpt4 key购买 nike

我正在 Swift 中从 subreddit 解析 JSON。网址是:“https://www.reddit.com/r/swift/.json”对象返回 nilkeyNotFound。我觉得也许我的嵌套不正确或与网络调用有关。是我的 Model 还是 NetworkingService?谢谢!

我的 Reddit 模型 如下所示:

import Foundation

struct Model : Decodable {
let data: Children
}

struct Children: Decodable {
let children: [RedditData]
}

struct RedditData: Decodable {
let data: SecondaryData
}

struct SecondaryData : Decodable {
let selftext: String
let preview: Images
}

struct Images: Decodable {
let images: [Source]
}

struct Source: Decodable {
let url: URL
}

我的 NetworkingService 看起来像这样:

import Foundation

class NetworkingService {

static let shared = NetworkingService()
private init() {}

let session = URLSession.shared

func getReddits(success successBlock: @escaping (Model) -> Void) {
guard let url = URL(string: "https://www.reddit.com/r/swift/.json") else { return }
let request = URLRequest(url: url)

session.dataTask(with: request) { [weak self] data, _, error in
guard self != nil else { return }

if let error = error { print(error); return }
do {
let decoder = JSONDecoder()
//decoder.keyDecodingStrategy = .convertFromSnakeCase

let model = try decoder.decode(Model.self, from: data!)
successBlock(model)
print("model is \(model)")
} catch {
print(error)
}
}.resume()
}
}

抛出错误:

keyNotFound(CodingKeys(stringValue: "url", intValue: nil), Swift.DecodingError.Context(codingPath: [CodingKeys(stringValue: "data", intValue: nil), CodingKeys(stringValue: "children", intValue: nil), _JSONKey(stringValue: "Index 0", intValue: 0), CodingKeys(stringValue: "data", intValue: nil), CodingKeys(stringValue: "preview", intValue: nil), CodingKeys(stringValue: "images", intValue: nil), _JSONKey(stringValue: "Index 0", intValue: 0)], debugDescription: "No value associated with key CodingKeys(stringValue: \"url\", intValue: nil) (\"url\").", underlyingError: nil))
2019-08-02 06:13:59.068781-0400 Testing[65504:3994601] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C1.1:2][0x7f9814c0dc70] get output frames failed, state 8196
2019-08-02 06:13:59.068978-0400 Testing[65504:3994601] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C1.1:2][0x7f9814c0dc70] get output frames failed, state 8196
2019-08-02 06:13:59.069779-0400 Testing[65504:3994601] TIC Read Status [1:0x0]: 1:57
2019-08-02 06:13:59.069899-0400 Testing[65504:3994601] TIC Read Status [1:0x0]: 1:57

最佳答案

您缺少 JSON 的源属性

struct Images: Decodable {
let images: [Image]
}

struct Image: Decodable {
let source: Source
}

struct Source: Decodable {
let url: URL
let width: Int
let height: Int
}

关于ios - 我正在尝试使用 Swift Codable 从 subreddit 解析 JSON。为什么我的对象返回零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57324606/

26 4 0
文章推荐: php - Css 如何在一个词后水平对齐我的圆圈
文章推荐: c++ - 在 Halide 管道中访问函数
文章推荐: Javascript ng-href 在 ng-repeat 中不起作用
文章推荐: php - 当 jquery 用于自动刷新时创建的附加
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com