最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

[已解决]swift中确认Alamofire中Http的POST参数时编码用ParameterEncoding.JSON是否可以把布尔型变量输出为true和false

iOS crifan 5270浏览 0评论

问题:

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&lt;String, AnyObject&gt;?, respJsonHandler: (Alamofire.Result&lt;JSON, NSError&gt;, mergedAllPara:Dictionary&lt;String, AnyObject&gt;) -&gt; 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

JSON DataTypes

“Boolean    true or false”

integer – JSON values 1 or 0 – int or boolean – Stack Overflow

JSON

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

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
83 queries in 0.162 seconds, using 22.10MB memory