问题:
swift中,用Alamofire的HTTP去post
参数编码已经设置为了:ParameterEncoding.JSON
<code>func getUrlRespJson_async(httpMethod:Alamofire.Method, url:String, parameters: [String : AnyObject]? = nil, headers: [String : String]? = nil, extraPara:Dictionary<String, AnyObject>?, respJsonHandler: (Alamofire.Result<JSON, NSError>, mergedAllPara:Dictionary<String, AnyObject>) -> Void) { Alamofire .request( httpMethod, url, parameters: parameters, encoding: ParameterEncoding.JSON, headers: currentHeaders) </code>
不过,在调用之前发现
类型为:
[String : AnyObject]?
的parameters这个变量,打印出来是值是:
bool值打印出来是1
而不是希望看到的true
然后这个参数调用服务器的API接口后,返回出错。
所以此处怀疑是由于bool参数,在经过Alamofire的ParameterEncoding.JSON的encode,不知道是不是也是把bool变成1,而不是false而导致接口调用出错的。
所以此处先去确认一下:
HTTP的POST时的JSON参数中,如果是布尔型Bool变量,
正常的话,是:
最好,还是必须
把bool转换为true或false
(当然不是字符串的”true”或”false”了)
还是转换为0或1,也可以?
(当然也不是字符串的”0”或”1”了)
http post json bool true false
“Boolean true or false”
integer – JSON values 1 or 0 – int or boolean – Stack Overflow
java – JSON Post request for boolean field sends false by default – Stack Overflow
iphone – AFNetworking JSON request with a boolean – Stack Overflow
以及:
对于Alamofire来说,ParameterEncoding.JSON将Bool转换之后到底是0,1还是false,true
去到官网:
Alamofire/Alamofire: Elegant HTTP Networking in Swift
中没有看到,关于Bool的被JSON化的输出的示例
可以去试试找找http.body的输出,看看是否能看到josn化后的Bool值到底是什么
期间遇到:
[基本解决]swift中将NSData转换为string或JSON或NSDictionary
基本上确定:
Bool被编码为true和false了。
[总结]
JSON标准中,要求布尔型变量是true或false(而不是1或0)
对应的swift中的网络库Alamofire中,当使用ParameterEncoding.JSON去编码参数为JSO呢字符串时,也的确是把Bool转换为对应的true或false的。
(另,新版本的AFNetworking也是同样的正确的做法,把Bool转换为true或false的)
转载请注明:在路上 » [已解决]swift中确认Alamofire中Http的POST参数时编码用ParameterEncoding.JSON是否可以把布尔型变量输出为true和false