我正在执行 alamofire 请求并将正文参数转换为 swift 字典,但我认为我正在以错误的格式转换它。谁能建议我将此 json 正文转换为 swift 参数的正确格式是什么?
我在 postman 中发送的实际正文给出了正确的回复:-
{
"events": [
{
"distance_to_next_route_change": "null",
"accelerationX": "0.10055954",
"accelerationY": "-0.0047885496",
"accelerationZ": "-0.0047885496",
"drivingState": "DRIVING",
"latitude": "12.921918",
"longitude": "77.658917",
"next_route_coordinate": "null",
"speed": "33",
"timeStamp": "1560319632021",
"tripID": "7090291482_1560319518940",
"maneuver_list": [],
"tripState": "null",
"eventId": "event_tacticurv_id"
}
]
}
我在 alamofire 参数中发送的内容:-
let params = [
"events": [
[
"distance_to_next_route_change": "null",
"accelerationX": "0.10055954",
"accelerationY": "-0.0047885496",
"accelerationZ": "-0.0047885496",
"drivingState": "DRIVING",
"latitude": "12.921918",
"longitude": "77.658917",
"next_route_coordinate": "null",
"speed": "33",
"timeStamp": "1560319632021",
"tripID": "7090291482_1560319518940",
"maneuver_list": [],
"tripState": "null",
"eventId": "event_tacticurv_id"
],
[
"distance_to_next_route_change": "null",
"accelerationX": "0.10055954",
"accelerationY": "-0.0047885496",
"accelerationZ": "-0.0047885496",
"drivingState": "DRIVING",
"latitude": "12.921918",
"longitude": "77.658917",
"next_route_coordinate": "null",
"speed": "33",
"timeStamp": "1560319632021",
"tripID": "7090291482_1560319518940",
"maneuver_list": [],
"tripState": "null",
"eventId": "event_tacticurv_id"
]
]
]
预期回复:
{
"code": "OK",
"message": "Successfully processed your request",
"statusCode": 200
}
响应即将到来:
{
"code": "INTERNAL_SERVER_ERROR",
"message": "Internal server error occured. Please try again later.",
"statusCode": 500
}
完整代码如下:-
func testApi() {
let defaultManager: Alamofire.SessionManager = {
let serverTrustPolicies: [String: ServerTrustPolicy] = [
"asia-east2-sandboxkruzr.cloudfunctions.net": .pinCertificates(
certificates: ServerTrustPolicy.certificates(),
validateCertificateChain: true,
validateHost: true
),
"35.220.245.158": .disableEvaluation
]
let configuration = URLSessionConfiguration.default
configuration.httpAdditionalHeaders = Alamofire.SessionManager.defaultHTTPHeaders
return Alamofire.SessionManager(
configuration: configuration,
serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicies)
)
}()
let params = [
"events": [
[
"distance_to_next_route_change": "null",
"accelerationX": "0.10055954",
"accelerationY": "-0.0047885496",
"accelerationZ": "-0.0047885496",
"drivingState": "DRIVING",
"latitude": "12.921918",
"longitude": "77.658917",
"next_route_coordinate": "null",
"speed": "33",
"timeStamp": "1560319632021",
"tripID": "7090291482_1560319518940",
"maneuver_list": [],
"tripState": "null",
"eventId": "event_tacticurv_id"
],
[
"distance_to_next_route_change": "null",
"accelerationX": "0.10055954",
"accelerationY": "-0.0047885496",
"accelerationZ": "-0.0047885496",
"drivingState": "DRIVING",
"latitude": "12.921918",
"longitude": "77.658917",
"next_route_coordinate": "null",
"speed": "33",
"timeStamp": "1560319632021",
"tripID": "7090291482_1560319518940",
"maneuver_list": [],
"tripState": "null",
"eventId": "event_tacticurv_id"
]
]
]
let header = [
"Content-Type": "application/json",
"Authorization": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1aWQiOiJjMGFhYzBkYy1lZGI5LTQzMzEtYWVjNC0wYmU5NTY3MDQ5M2UifQ.kbKSk5FEu2cWceb9MmZH8wefpyObyjmRM6PRDbJkUW0"
]
defaultManager.request("http://35.220.245.158/gateway/events", method: .post, parameters: params, encoding: JSONEncoding.default, headers: header).responseJSON { (response) in
let _ = defaultManager
print("api response is")
print(response.result.value)
}
}
最佳答案
您的事件中的括号不正确,它们需要是 { } 才能代表单个事件类,而不是代表数组的 [ ]。它们应该看起来像这样。
let params = [
"events": [
{
"distance_to_next_route_change": "null",
"accelerationX": "0.10055954",
"accelerationY": "-0.0047885496",
"accelerationZ": "-0.0047885496",
"drivingState": "DRIVING",
"latitude": "12.921918",
"longitude": "77.658917",
"next_route_coordinate": "null",
"speed": "33",
"timeStamp": "1560319632021",
"tripID": "7090291482_1560319518940",
"maneuver_list": [],
"tripState": "null",
"eventId": "event_tacticurv_id"
},
{
"distance_to_next_route_change": "null",
"accelerationX": "0.10055954",
"accelerationY": "-0.0047885496",
"accelerationZ": "-0.0047885496",
"drivingState": "DRIVING",
"latitude": "12.921918",
"longitude": "77.658917",
"next_route_coordinate": "null",
"speed": "33",
"timeStamp": "1560319632021",
"tripID": "7090291482_1560319518940",
"maneuver_list": [],
"tripState": "null",
"eventId": "event_tacticurv_id"
}
]
]
关于swift - 如何将此 Json 正文转换为 alamofire 参数格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56911115/