我们如何在swift中用BOOL代替httpBody中的(JSON或数据),因为我想用true代替{value:true}?

我们如何在swift中用BOOL代替httpBody中的(JSON或数据),因为我想用true代替{value:true}?,swift,Swift,正文应该只包含bool而不包含json对象或数据 我曾尝试将bool转换为键入JSON request.httpMethod = "PUT" let session = URLSession(configuration:URLSessionConfiguration.default, delegate: nil, delegateQueue: nil) var value: Bool? = false if let _ = value {

正文应该只包含bool而不包含json对象或数据

我曾尝试将bool转换为键入
JSON

request.httpMethod = "PUT"
        let session = URLSession(configuration:URLSessionConfiguration.default, delegate: nil, delegateQueue: nil)     

  var value: Bool? = false

    if let _ = value
    {

        let data = Data(bytes: &value, count: MemoryLayout.size(ofValue: value)) //Int 

        var request = URLRequest(url: url! as URL)
        request.httpBody = data
}
解析的JSON:'可选({“statusCode”:400,“错误”:“错误” 请求“,”消息“:”值必须为 布尔值“,“验证”:{“源”:“有效负载”,“键”:[“值”]}}]


只需创建一个简单的结构:

struct RequestData: Encodable {
let value: Bool
}
并使用JSON对其进行解析:

let data = try JSONEncoder().encode(RequestData(value: true))
简单地使用它:

request.httpBody = data
已编辑

对于简单的bool,请使用以下命令:

let data = "true".data(using: .ascii)

这是一个有效的json

它仍然显示解析的json:“可选({“statusCode”:400,“错误”:“错误请求”,“消息”:“值必须是布尔值”,“验证”:{“source”:“payload”,“keys”:[“value”]}}})”我认为api接受的是真正的布尔值,而不是{true}json对象。实际上
httpBody
必须是数据。问题是Bool的数据表示形式是什么?数字1/0、字符串“1”/“0”、字符串“真”/“假”或?就数据而言,Bool是一个虚拟值。