JSONEncoder 不支持 IOS 13- 以下的整数值

JSONEncoder doesnt work integer values below IOS 13-

我正在尝试将一个整数值发送到带有正文的 WebService,所以我创建了一个这样的函数:

 static func GetRoomVersionAndRemainingSeconds(auctionId:Int,completed:@escaping (ServiceResultDene<String>)->()){
    var memberJson : String = ""
    do{
        let jsonEncoder = JSONEncoder()
        let jsonData = try jsonEncoder.encode(auctionId)
        memberJson = String(data: jsonData, encoding: String.Encoding.utf8)!
    
        
    }catch{
        print(error)
    }

    var request = URLRequest(url: URL(string: WebServiceUrls.GetRoomVersionAndRemainingSeconds)!)
    request.httpMethod = HTTPMethod.post.rawValue
    request.setValue("application/json", forHTTPHeaderField: "Content-Type")
    request.setValue(Util.cookie, forHTTPHeaderField: "Cookie")
    request.httpBody = (memberJson).data(using: .unicode)
    Alamofire.request(request).responseJSON{response in 
     .... 
     }

当我尝试上面的代码时,它完美地编码了 IOS 13+ 上的整数值 -- memberJson is = "\"4\"" 但是当我在 IOS 12.4 上尝试这个时它不编码并且 error.localizedDescription returns : invalidValue(4, Swift.EncodingError.Context(codingPath: [], debugDescription: "Top-level Int encoded as number JSON fragment.", underlyingError: nil))
这里有什么问题?任何建议都可以是 good.Thanks

JSON 编码毫无意义。实际上,您要将 Int 转换为 String.

这可以做得更简单

static func GetRoomVersionAndRemainingSeconds(auctionId: Int,completed: @escaping (ServiceResultDene<String>)->()){

    var request = URLRequest(url: URL(string: WebServiceUrls.GetRoomVersionAndRemainingSeconds)!)
    request.httpMethod = HTTPMethod.post.rawValue
    request.setValue("application/json", forHTTPHeaderField: "Content-Type")
    request.setValue(Util.cookie, forHTTPHeaderField: "Cookie")
    request.httpBody = Data(String(auctionId).utf8)
    Alamofire.request(request).responseJSON{response in 
      .... 
    }

顺便说一下,错误的原因是JSONEncoder不支持在iOS 13之前编码片段。