使用 alamofire 在 Swift 上解析 Json

Posted

技术标签:

【中文标题】使用 alamofire 在 Swift 上解析 Json【英文标题】:Json Parsing at Swift with alamofire 【发布时间】:2018-06-18 07:38:59 【问题描述】:

我正在用 alamofire 快速解析 JSON。我正在尝试查看循环我的 json,但我的代码有问题。使用调试器查看代码时,我的应用程序不会进入 if 和 for。我的代码有什么问题? 我必须用“for”循环我的 json 并解析我的 json 数据。

    Alamofire.request(apiToContact, method: .get, encoding: URLEncoding.default, headers: headersq).responseJSON  (response) in
    print(response)
    if response.result.isSuccess 

        guard let resJson = response.result.value else  return 

        print(resJson);
        if let json = response.result.value as? [String:AnyObject] 
            for entry in json 
                print("\(entry)") // this is where everything crashes
            
        

     if let JSON = response.result.value as? NSDictionary
            for entry in JSON 
                print("\(entry)") // this is where everything crashes
            
        

    
    if response.result.isFailure 

    

Print(response) 给出这个 json.:

    SUCCESS: (
    
        KoorX = "38.414745";
        KoorY = "27.183055";
        Yon = 1;
    ,
    
        KoorX = "38.41474";
        KoorY = "27.18382667";
        Yon = 1;
    ,
    
       KoorX = "38.422255";
       KoorY = "27.15055167";
       Yon = 1;

)

【问题讨论】:

"SUCCESS:" 这不是来自您的 JSON 吗?那么你的 JSON 是一个字典数组。类似:[[String: Any]]。另外,如果崩溃,请阅读控制台中的错误消息,如果您不明白,请提供给我们。 【参考方案1】:

首先,在 Swift 3+ 中,JSON 字典是 [String:Any]

两个问题:

    数组是根对象中键 SUCCESS 的值。 字典的快速枚举语法是for (key, value) in dictionary

guard let resJson = response.result.value as? [String:Any],
      let success = resJson["SUCCESS"] as? [[String:Any]] else  return 
      for entry in success 
            print(entry)
        
     

【讨论】:

【参考方案2】:

此代码可以帮助您

if let locationJSON = response.result.value
     
      let locationObject: Dictionary = locationJSON as! Dictionary<String, Any>
       self.dataArray = locationObject["data"]as! NSArray

        

【讨论】:

以上是关于使用 alamofire 在 Swift 上解析 Json的主要内容,如果未能解决你的问题,请参考以下文章

swift 4 Alamofire 解析数据并在 UILabel 上显示?

swift 4 使用 Alamofire 解析没有键的 JSON

无法解析响应 alamofire swift 3

在 Swift 中将 Alamofire 结果解析为对象(使用:Alamofire、SwiftyJSON 和 ObjectMapper)

使用 Alamofire 在 swift 3 中解析 Json

如何使用 Alamofire 在 Swift 3 中解析 JSON?