Swift получает значение от ключа от JSON - PullRequest
0 голосов
/ 16 июня 2019

У меня есть следующий Json

{ "пользователь": { «возраст»: 0, "_id": "5d063d9fad424e0017e3113a", "имя": "Супермен 2", "электронная почта": "super@hotmail.com", "createAt": "2019-06-16T13: 01: 19.350Z", "updatedAt": "2019-06-16T13: 01: 19.471Z", "__v": 1 }, "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1ZDA2M2Q5ZmFkNDI0ZTAwMTdlMzExMM2EiLCJpYXQiOjE1NGlGuqWWWWEWEWEWEWEWEWEWEWEWEWGWEWEWEWEWEWHWKW } Проблема в том, что я не знаю, как получить _id или имя от "пользователя"

Я могу получить "токен" без проблем.

let task = URLSession.shared.dataTask(with: request) { (data: Data?, response: URLResponse?, error: Error?) in

    self.removeActivityIndicator(activityIndicator: myActivityIndicator)

    if error != nil
    {
        self.displayMessage(userMessage: "Could not successfully perform this request. Please try again later")
        print("error=\(String(describing: error))")
        return
    }


    //Let's convert response sent from a server side code to a NSDictionary object:
    do {
        let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSDictionary

        if let parseJSON = json {


            let userId = parseJSON["userId"] as? String
            print("User id: \(String(describing: userId!))")

            if (userId?.isEmpty)!
            {
                // Display an Alert dialog with a friendly error message
                self.displayMessage(userMessage: "Could not successfully perform this request. Please try again later")
                return
            } else {
                self.displayMessage(userMessage: "Successfully Registered a New Account. Please proceed to Sign in")
            }

        } else {
            //Display an Alert dialog with a friendly error message
            self.displayMessage(userMessage: "Could not successfully perform this request. Please try again later")
        }
    } catch {

        // Display an Alert dialog with a friendly error message
        self.displayMessage(userMessage: "Could not successfully perform this request. Please try again later")
        print(error)
           }
    }

    task.resume()

Результаты должны показывать значения от _id и name

1 Ответ

1 голос
/ 16 июня 2019

Вы можете попробовать

let res = try? JSONDecoder().decode(Root.self,from:data)

// MARK: - Empty
struct Root: Codable {
    let user: User
    let token: String
}

// MARK: - User
struct User: Codable {
    let age: Int
    let id, name, email, createdAt: String
    let updatedAt: String
    let v: Int

    enum CodingKeys: String, CodingKey {
        case age
        case id = "_id"
        case name, email, createdAt, updatedAt
        case v = "__v"
    }
}

OR

let json = try JSONSerialization.jsonObject(with: data!) as! [String:Any]
let user = json["user"] as! [String:Any]
print(user["_id"])
print(user["name"])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...