Swift/MySql/PHP - “无法读取数据,因为它的格式不正确。”错误

Posted

技术标签:

【中文标题】Swift/MySql/PHP - “无法读取数据,因为它的格式不正确。”错误【英文标题】:Swift/MySql/PHP - "The data couldn’t be read because it isn’t in the correct format." error 【发布时间】:2020-09-30 01:32:00 【问题描述】:

当我尝试将 mysql 数据加载到我的 swift 程序中时出现此错误。在将输出放入我的 SwiftUI 之前,我试图在控制台中获取输出。当我使用断点进行调试时,我可以看到加载到变量中的数据,但 Swift 无法读取它。如果我找到任何解决方法,我看了很多视频,但没有运气。

错误:无法读取数据,因为格式不正确。

在这一行出现错误: let postsData = try JSONDecoder().decode([Post].self, from: data)

任何帮助都非常感谢,因为我在这里已经快一周了。谢谢。

这是我的完整代码。

Post.swift 结构:
import Foundation

struct Post: Codable 
    var Name: String!
    var City: String!

JsonViewController.swift 类:
import UIKit

class JsonViewController: UIViewController 

    override func viewDidLoad() 
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        
        fetchPostData  (posts) in
            for post in posts 
                print(post.Name!)
            
        
    
    
    func fetchPostData(completionHandler: @escaping ([Post]) -> Void) 
        
        let url = URL(string: "https://localhost/service.php")!
        let task = URLSession.shared.dataTask(with: url)  (data, response, error) in
            
            guard let data = data else  return 
            
            do 
                
                let postsData = try JSONDecoder().decode([Post].self, from: data)
                
                completionHandler(postsData)
            
            catch 
                let error = error
                
                print(error.localizedDescription)
                
            
            
        
        task.resume()
    


Web 浏览器中的输出 - 来自 service.php:

["Name":"John","City":"Sydney"]

【问题讨论】:

这个好像和php没什么关系 实际上,我刚刚发现了我的 service.php 文件的一个问题,它有几个导致问题的 html 标签。清理文件后工作正常。感谢您的回复。 【参考方案1】:

虽然数据在网络浏览器中以 JSON 格式正确加载,但如果您的 service.php 文件在 php 标签之前和之后有任何 HTML 标签等,它将无法在 Swift 中正确解析。非常愚蠢的错误,但希望对其他人有所帮助。

【讨论】:

以上是关于Swift/MySql/PHP - “无法读取数据,因为它的格式不正确。”错误的主要内容,如果未能解决你的问题,请参考以下文章

MagicalRecord 总是出错 - 无法读取数据

电脑死机导致无法读取数据表怎么办?

infoPlist.strings 读取失败:无法读取数据,因为它的格式不正确

Swift 无法读取数据,因为它的格式不正确

无法读取数据库名称 Web 项目

无法读取数据,因为它的格式不正确(swift)