【问题标题】:How to access my json data in my case - swift在我的情况下如何访问我的 json 数据 - swift
【发布时间】:2017-04-27 08:01:52
【问题描述】:

我有以下通过网络服务发送给我的子字符串。我正在尝试访问其中的字典,但出现错误。请问有人可以建议吗?

我的 json 字符串:

 {"status":200,"message":"Registration success","firstname":"tommy","lastname":"tang","userId":17,"email":"t@gm.com"}

我尝试访问“状态”的代码

          do{
                let jsonObject = try JSONSerialization.jsonObject(with: jsonData, options: [])
                print("jsonObject: \(jsonObject)")

                guard
                    let regArray = jsonObject as? [[String:String]] else{

                        print("json messed up")
                }

                guard
                    let status = regArray["status"] as? String else{
                        print("error")
                }
                print("status: \(status)")

            }catch let error{
                print("print error: \(error)")
            }

        }else if let requestError = error{
            print("error detail: \(requestError)")
        }else{
            print("unexpected error")
        }

我得到的错误是“无法使用 String 类型的索引为 [[String:String]] 类型的值下标”

即使我使用

let regArray = jsonObject as? [[String:Any]] 

我遇到同样的错误

【问题讨论】:

  • 您正在创建字典数组,而您的数据是字典格式。创建字典
  • 这很简单:您的 JSON 是顶级字典(嗯,它根本就是字典)。那么let jsonSerialized as? [String:Any]?

标签: ios json swift3


【解决方案1】:

UserID 和状态是 Int。所以一定是[String : Any]。它是一个简单的dict数组。

在代码中,改变

status = regArray["status"] as? String

status = regArray["status"] as? Int

因为您将 Int 值分配为字符串,所以这是不可能的。

【讨论】:

    猜你喜欢
    • 2020-12-25
    • 2019-02-18
    • 2022-10-05
    • 1970-01-01
    • 2017-01-28
    • 2016-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多