简体   繁体   English

如何使用 alamofire swift 解析这个 json

[英]how to parse this json using alamofire swift

I just want to parse only id from this JSON response how can I do我只想从这个 JSON 响应中解析id我该怎么做

{
    message = "main_user";
    result = ({
            address = "";
            "city_name" = "Dahaneh-ye Ghawri";
            "country_name" = Afghanistan;
            "created_at" = "2018-12-11 11:15:56";
            "device_type" = 2;
            "first_name" = reffed;
            gender = 1;
            id = 103;
            "is_active" = 1;
            "last_name" = "";
            otp = 3470;
            pincode = "";
            "state_name" = Baglan;
            "swith_add_without_hub" = 1;
            "updated_at" = "2018-12-11 11:15:56";
            "user_email" = "harinder@h.com";
            "user_mobile" = 124312311;
            "user_name" = harinder12;
            "user_password" = d8578edf8458ce06fbc5bb76a58c5ca4;
            verified = 1;
        }
    );
    status = true;
}

I am using alamofire我正在使用 alamofire

Alamofire.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default)
            .responseJSON { response in
                print(response) //to get status code
                if let status = response.response?.statusCode {
                    switch(status){
                    case 201:
                        print("example success")
                    default:
                        print("error with response status: \(status)")
                    }
                } //to get JSON return value
            if let result = response.result.value {
                let JSON = result as! NSDictionary
                print(JSON)
            }

        }

You can use this JSON generator: Link您可以使用此 JSON 生成器:链接

import Foundation

struct RootClass: Codable {

    let message: String
    let result: Result
    let status: Bool

    private enum CodingKeys: String, CodingKey {
           case message = "message"
        case result = "result"
        case status = "status"
    }

    init(from decoder: Decoder) throws {
        let values = try decoder.container(keyedBy: CodingKeys.self)
        message = try values.decode(String.self, forKey: .message)
        result = try values.decode(Result.self, forKey: .result)
        status = try values.decode(Bool.self, forKey: .status)
    }

}


struct Result: Codable {

    let address: String
    let cityName: String
    let countryName: String
    let createdAt: String
    let deviceType: Int
    let firstName: String
    let gender: Int
    let id: Int
    let isActive: Int
    let lastName: String
    let otp: Int
    let pincode: String
    let stateName: String
    let swithAddWithoutHub: Int
    let updatedAt: String
    let userEmail: String
    let userMobile: Int
    let userName: String
    let userPassword: String
    let verified: Int

    private enum CodingKeys: String, CodingKey {
        case address = "address"
        case cityName = "city_name"
        case countryName = "country_name"
        case createdAt = "created_at"
        case deviceType = "device_type"
        case firstName = "first_name"
        case gender = "gender"
        case id = "id"
        case isActive = "is_active"
        case lastName = "last_name"
        case otp = "otp"
        case pincode = "pincode"
        case stateName = "state_name"
        case swithAddWithoutHub = "swith_add_without_hub"
        case updatedAt = "updated_at"
        case userEmail = "user_email"
        case userMobile = "user_mobile"
        case userName = "user_name"
        case userPassword = "user_password"
        case verified = "verified"
    }    

    init(from decoder: Decoder) throws {
        let values = try decoder.container(keyedBy: CodingKeys.self)
        address = try values.decode(String.self, forKey: .address)
        cityName = try values.decode(String.self, forKey: .cityName)
        countryName = try values.decode(String.self, forKey: .countryName)
        createdAt = try values.decode(String.self, forKey: .createdAt)
        deviceType = try values.decode(Int.self, forKey: .deviceType)
        firstName = try values.decode(String.self, forKey: .firstName)
        gender = try values.decode(Int.self, forKey: .gender)
        id = try values.decode(Int.self, forKey: .id)
        isActive = try values.decode(Int.self, forKey: .isActive)
        lastName = try values.decode(String.self, forKey: .lastName)
        otp = try values.decode(Int.self, forKey: .otp)
        pincode = try values.decode(String.self, forKey: .pincode)
        stateName = try values.decode(String.self, forKey: .stateName)
        swithAddWithoutHub = try values.decode(Int.self, forKey: .swithAddWithoutHub)
        updatedAt = try values.decode(String.self, forKey: .updatedAt)
        userEmail = try values.decode(String.self, forKey: .userEmail)
        userMobile = try values.decode(Int.self, forKey: .userMobile)
        userName = try values.decode(String.self, forKey: .userName)
        userPassword = try values.decode(String.self, forKey: .userPassword)
        verified = try values.decode(Int.self, forKey: .verified)
    }
}

Then use alamofire to parse然后使用alamofire解析

Alamofire.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default)
        .responseJSON { response in
            print(response) //to get status code
            if let status = response.response?.statusCode {
                switch(status){
                case 201:
                    print("example success")
                default:
                    print("error with response status: \(status)")
                }
            } //to get JSON return value
        if let result = response.result.value {
            let JSON = result as! RootClass
            print(JSON)
        }

    }

my suggestion is to use SwiftyJSON: SwiftyJSON 我的建议是使用SwiftyJSON: SwiftyJSON

look at this example: 看这个例子:

Alamofire.request(url, method: .get).validate().responseJSON { response in
    switch response.result {
    case .success(let value):
        let json = JSON(value)
        print("JSON: \(json)")
    case .failure(let error):
        print(error)
    }
}

after that you can say something like: 之后,您可以说:

json["id"]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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