我需要使用 Alamofire 解析 Json 的帮助

Posted

技术标签:

【中文标题】我需要使用 Alamofire 解析 Json 的帮助【英文标题】:I need help for Json parsing with Alamofire 【发布时间】:2019-06-25 14:24:31 【问题描述】:

我是一名初级程序员,我无法解析我的 json 文件。我可以在控制台中看到数据,但我需要帮助来解析 json 数据。我从 url 分享了我的 json 数据,我想用 Alamofire 解析。我用 Alamofite 和 SwiftyJSON 安装了 PodFile。我没有任何错误,但我需要帮助来解析它。 我还为以下数据创建了字符串数组。我将在数组中追加数据。

[
  
    "id" : 1,
    "team" : "Liverpool",
    "players" : [
      
        "id" : 2,
        "name" : "Alisson",
        "position" : "Goal Keeper",
        "number" : "13"
      ,
      
        "id" : 3,
        "name" : "Salah",
        "position" : "Forward",
        "number" : "10"
      
    ],
    "trophies" : [
      "2019 champions league",
      "2005 champions league"
    ],
    "logoUrl" : "url"
  ,
  
    "id" : 4,
    "team" : "Real Madrid",
    "players" : [
      
        "id" : 5,
        "name" : "Ramos",
        "position" : "Defender",
        "number" : "4"
      ,
      
        "id" : 6,
        "name" : "Benzema",
        "position" : "Forward",
        "number" : "9"
      
    ],
    "trophies" : [
      "2018 champions league",
      "2017 champions league",
      "2016 champions league"
    ],
    "logoUrl" : "url"
  
]



import Alamofire
import SwiftyJSON

func fetchJsonData()
       DispatchQueue.main.async 
            Alamofire.request(url).responseData  response in
            guard let data = response.data else  return 
            do 
                let res = try JSONDecoder().decode([PageData].self, from:data)
                print(res)
             catch  
                print("having trouble converting it to a dictionary" , error)
            
        

        


// this is my modal file

struct PageData: Codable  
    let team: String
    let players: [Player]
    let trophies: [String]
    let logoUrlL: String 


struct Player: Codable 
    let id: Int 
    let name,position, number: String?

【问题讨论】:

【参考方案1】:

您需要responseData 才能使用JSONDecoder

Alamofire.request(url).responseData  response in 
    guard let data = response.data else  return  
    do  
        let res = try JSONDecoder().decode([PageData].self, from:data)
        print(res)
     catch  
        print("having trouble converting it to a dictionary" , error)
    

playerstrophies 也是数组

struct PageData: Codable  
    let team: String
    let players: [Player]
    let trophies: [String]
    let logoUrlL: String 


struct Player: Codable 
    let id: Int 
    let name,position, number, type, quantity: String?

【讨论】:

感谢您的回答,但无法将其转换为字典。我在控制台中看不到任何数据兄弟 从答案中重新复制结构并尝试 我的错误对不起类型和质量。对不起,这是我个人的错误。我编辑它。玩家将只有名称位置一个数字字符串:(再次抱歉 edit 仍然使用[] 使其成为一个数组??你需要它 作为 1 项字典吗?? 我可以在控制台上看到带有我的代码的 []。我会用tableview列出团队信息。我无法解析它,我的朋友:/

以上是关于我需要使用 Alamofire 解析 Json 的帮助的主要内容,如果未能解决你的问题,请参考以下文章

我应该如何使用 Alamofire 和 SwiftyJSON 解析来自 API 的 JSON 响应?

使用 alamofire 在 Swift 上解析 Json

无法使用闭包使用 alamofire 解析 json

使用 Alamofire 解析 JSON 问题

JSON数据未在swift3中使用Alamofire进行解析

Swift Alamofire JSON 解析