简体   繁体   中英

Swift parse data from weird object (almost JSON)

I'm trying to get data out of an object which I have not seen yet in swift. The type of the object is Any .

    func getMetaData(_ callback: @escaping (Error?) -> ()) {
        guard let accessToken = self.credentials?.accessToken
            else { return callback(CredentialsManagerError.noCredentials) }
        Auth0
            .users(token: accessToken)
            .get(profile!.sub, fields: ["user_metadata"], include: true)
            .start { (result) in
                switch result {
                case .success(let user):
                    print(user)
                    self.metadata = user
                    callback(nil)
                case .failure(let error):
                    callback(error)
                }
        }
    }

The object came to be as a dictionary [String:Any] with any being ( print(user) ):

["user_metadata": {
    fname = abc;
    lname = xyz;
}]

I got user_metadata out and got this:

{
    fname = abc;
    lname = xyz;
}

This is eventually what I want to achieve:

UserMetaData(fname: "abc", lname: "xyz") 

It's not quite JSON and I have no clue what to do with it

Just as vasian said, I casted the inner object to a dictonnary providing me with an Optional(fname: "abc", lname: "xyz") which I could use!

typealias (standard with Auth0)

typealias ManagementObject = [String : Any]

inside the SessionManager.getMetaData()

self.metadata = (meta["user_metadata"] as! ManagementObject)

when I needed to get the data

let firstName = SessionManager.shared.metadata!["fname"]! as! String
let lastName = SessionManager.shared.metadata!["lname"]! as! String

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM