在快速使用alamofire时,我有以下原始数据作为参数发送
{
"customer": {
"firstname": "test",
"lastname": "user",
"email": "testuser30@gmail.com",
"website_id": 1,
"addresses": [
{
"customer_id": 3292,
"region": {
"region": "New York"
},
"country_id": "US",
"street": [
"US"
],
"telephone": "84656313",
"postcode": "34521",
"city": "us",
"firstname": "test",
"lastname": "usr",
"default_shipping": true,
"default_billing": true
}
]
}
}
我已经使用alamofire在代码中编写了以下参数。
let customer : Parameters = [
"email":email,
"firstname":fname,
"lastname":lname,
"website_id":1,
"addresses": {
[
"customer_id": id,
"region": [
"region": state
],
"country_id": country,
"street": {
self.add1Txt.text! + self.add2Txt.text!
},
"telephone": self.phoneTxt.text!,
"postcode": self.pincodeTxt.text!,
"city": self.cityTxt.text!,
"firstname": self.fnameLbl.text!,
"lastname": self.lnameLbl.text!,
"default_shipping": true,
"default_billing": true
]
}
]
let parameters: Parameters =
[
"customer": customer
]
它显示“ JSON写入(__SwiftValue)中的无效类型”。此参数传递有什么问题?
答案 0 :(得分:0)
您的客户变量不是正确的字典。 "addresses": {
实际上是字典的数组。它应类似于以下代码。除此之外,如果您使用Codable创建模型结构并借助JSONEncoder和JSONSerialization转换为字典,则可以避免此类问题。您可以看到此thread。
let parameters: Parameters = ["customer": [
"addresses" : [[
"city": "us",
"country_id" :"US",
"customer_id" :"3292",
"default_billing" : 1,
"default_shipping" : 1,
"firstname" :"test",
"lastname" :"usr",
"postcode" :34521,
"region" : ["region" : "New York"],
"street" : ["US"],
"telephone" : 84656313
]],
"email" : "testuser30@gmail.com",
"firstname": "test",
"lastname": "user",
"website_id" : 1
]]
答案 1 :(得分:0)
使用Quicktype从您的json立即生成结构:
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" rel="stylesheet"/>
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div class="container-fluid" id="app">
<div class="d-flex align-items-center navbar-left">
<button type="button"
@click="openOverlay"
class="navbar-toggler navbar-icon"
data-toggle="collapse" />
</div>
<div id="myNav" class="overlay">
<a href="javascript:void(0)"
class="closebtn" @click="closeOverlay">×</a>
<div class="overlay-content">
</div>
</div>
</div>