Alamofire,SwiftJSON,MJExtension,解析Json获取对象,带参数上传图片

第三方框架地址
https://github.com/CoderMJLee/MJExtension
MjExtension使用方法
https://github.com/Alamofire/Alamofire
https://github.com/SwiftyJSON/SwiftyJSON

使用方法
cocoapods 安装 http://www.bubuko.com/infodetail-425274.html
Carthage 安装 http://www.mamicode.com/info-detail-905311.html

主要代码
服务器地址请自行更换(主要记录使用方法帮助自己回忆)

上传图片带参数

func senderLocation(phone:NSString!, password:NSString!){
        print("phone \(phone) password \(password)")
        Alamofire.upload(
            .POST,
            UploadPhotoUrl,
            multipartFormData: { multipartFormData in
            //定位地址
                multipartFormData.appendBodyPart(data: self.location.dataUsingEncoding(NSUTF8StringEncoding)!, name: "pos"//图片压缩,转nsdata类型
                let imageData = UIImageJPEGRepresentation(self.image!, 0.3)
                //获取当前时间格式化成String类型
                let date:NSDate = NSDate()
                let formatter:NSDateFormatter = NSDateFormatter()
                formatter.dateFormat = "yyyyMMddHHmmss"
                let dateString = formatter.stringFromDate(date)
                //上传图片
                multipartFormData.appendBodyPart(data: imageData!, name: "photo", fileName: "\(dateString).jpg", mimeType: "image/jpg")
            },
            encodingCompletion: { encodingResult in
                switch encodingResult {
                case .Success(let upload, _, _):
                    upload.responseJSON { response in
                        debugPrint(response)
                    }
                    self.dismissViewControllerAnimated(true, completion: nil)
                case .Failure(let encodingError):
                    print(encodingError)
                }
            })
        }

获取Json

/**
     传入page参数获得数据这个
     - parameter page:传入page参数
     */
func getUserInfo(uid:NSString){
        Alamofire.request(.GET, GetUserInfoUrl, parameters: ["userNum":uid])
            .responseJSON { response in
            //使用MJExtension
                self.userInfo = UserInfos.mj_objectWithKeyValues(response.result.value!)
                if (self.userInfo.code == "success"){
                    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), {
                        print("\(ImageUrl)\(self.userInfo.inf!.headImg)")
                        let data = NSData(contentsOfURL: NSURL(string: "\(ImageUrl)\(self.userInfo.inf!.headImg)")!)
                        var image = UIImage()
                        if data != nil{
                            image = UIImage(data: data!)!
                        }
                        dispatch_async(dispatch_get_main_queue(), {
                            self.photoImage.image = image
                        })
                    })
                    self.tableView.reloadData()
                }
        }

    }

class Inf:NSObject{
    var intro:NSString!
    var headImg:NSString!
    var name:NSString!
    var role:NSString!
    var department:NSString!
}

class UserInfos: NSObject {
    var code:NSString!
    var inf:Inf?
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java中获取请求体的JSON解析JSON对象时出现了参数含有空格和乱码的问题。出现这个问题可能是由于请求体JSON中的参数值中含有空格或者非UTF-8编码导致的。 要解决这个问题,首先需要检查并确认请求体JSON中的参数值是否正确且符合JSON格式的规范。如果参数值含有空格或其他特殊字符,建议在发送请求时对参数值进行URL编码,确保其在传输过程中不会出现乱码。 在Java代码中,可以使用URLDecoder对请求体JSON进行解码。例如,可以使用如下代码获取请求体中的JSON字符串,并进行解码: String body = request.getReader().lines().collect(Collectors.joining(System.lineSeparator())); String decodedBody = URLDecoder.decode(body, "UTF-8"); 接下来,可以使用JSON库(如Jackson、Gson等)将解码后的JSON字符串解析JSON对象。例如,对于使用Jackson库的情况,可以使用如下代码将解码后的JSON字符串解析JSON对象: ObjectMapper mapper = new ObjectMapper(); JsonNode jsonNode = mapper.readTree(decodedBody); 在解析JSON对象之后,可以通过遍历JSON对象的属性、调用对应的getter方法等获取具体的参数值,进行后续的业务逻辑处理。 综上所述,要解决Java获取请求体JSON解析JSON对象参数含有空格乱码的问题,需要注意参数值的格式以及编码方式,并在Java代码中正确解码和解析JSON对象。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值