从POST请求中打印JSON数据值时出现问题

时间:2019-06-28 07:08:20

标签: ios json swift

基本上,我具有以下功能来响应POST请求并显示JSON数据。

我只想通过打印del_tex的值来打印此数据的结果

在ViewController的顶部,我将变量结构定义为:

var structure = [NotesStructure]()

NotesStructure是接收到的JSON的结构:

import UIKit

struct NotesStructure: Codable {
    let del_tex: String

}

以下是获取和处理数据的JSON函数。我尝试打印del_tex的值,但得到结构无值del_tex

的错误
private func fetchJSON() {
    guard let url = URL(string: "https://example.com/example/example"),
        let value = driverName.addingPercentEncoding(withAllowedCharacters: .urlQueryValueAllowed)
        else { return }

    var request = URLRequest(url: url)
    request.httpMethod = "POST"
    request.httpBody = "person=\(driverName)&serial=\(peronNum)".data(using: .utf8)

    URLSession.shared.dataTask(with: request) { data, _, error in
        guard let data = data else { return }


        do {
            self.structure = try JSONDecoder().decode([NotesStructure].self,from:data)
            DispatchQueue.main.async {

                print(self.structure.del_tex)

            }
        }
        catch {
            print(error)
        }

        }.resume()

}

1 个答案:

答案 0 :(得分:1)

您的结果是一个数组,因此您首先需要访问该数组,或者只有第一个元素

do {
     self.structure = try JSONDecoder().decode([NotesStructure].self,from:data)
     if let first = self.structure.first {
          print(first.del_tex)
     }
 ...

或打印整个数组

do {
     self.structure = try JSONDecoder().decode([NotesStructure].self,from:data)
     for item in self.structure {
          print(item.del_tex)
     }
...