如何从可编码结构中的空数组中删除双引号
how to remove double quote from empty array in codable struct
我正在使用 URLSession 发出 POST 请求。我需要在请求正文中发送以下字符串:
{"rebajados": false, "text": "pantalon", "municipios": [], "departamentos": []}
所以我定义了一个结构来使用 codable 将数据作为请求正文发送。结构是这样的。
struct filter: Codable {
var text: String?
var departamentos: [String]?
var municipios: [String]?
var rebajados = false
}
但是我发送的是这样的:
{
"departamentos": [
""
],
"municipios": [
""
],
"rebajados": false,
"text": "pantalon"
}
后端returns没有结果因为[""]
让它丢失了。
那么有什么可行的方法可以使数组成为没有双 ""
的空数组?
注意:我无法修改后端以接受带有空字符串的数组。
尝试
struct filter:Codable {
var text: String?
var departamentos: [String] = []
var municipios: [String] = []
var rebajados = false
}
首先请以大写字母开头的结构命名。
空字符串数组被编码为空 JSON 数组
struct Filter : Codable {
let text : String
let departamentos : [String]
let municipios : [String]
let rebajados : Bool
}
let filter = Filter(text: "pantalon", departamentos: [], municipios: [], rebajados: false)
do {
let data = try JSONEncoder().encode(filter)
let string = String(data: data, encoding: .utf8)!
print(string) // {"rebajados":false,"municipios":[],"departamentos":[],"text":"pantalon"}
} catch {
print(error)
}
我正在使用 URLSession 发出 POST 请求。我需要在请求正文中发送以下字符串:
{"rebajados": false, "text": "pantalon", "municipios": [], "departamentos": []}
所以我定义了一个结构来使用 codable 将数据作为请求正文发送。结构是这样的。
struct filter: Codable {
var text: String?
var departamentos: [String]?
var municipios: [String]?
var rebajados = false
}
但是我发送的是这样的:
{
"departamentos": [
""
],
"municipios": [
""
],
"rebajados": false,
"text": "pantalon"
}
后端returns没有结果因为[""]
让它丢失了。
那么有什么可行的方法可以使数组成为没有双 ""
的空数组?
注意:我无法修改后端以接受带有空字符串的数组。
尝试
struct filter:Codable {
var text: String?
var departamentos: [String] = []
var municipios: [String] = []
var rebajados = false
}
首先请以大写字母开头的结构命名。
空字符串数组被编码为空 JSON 数组
struct Filter : Codable {
let text : String
let departamentos : [String]
let municipios : [String]
let rebajados : Bool
}
let filter = Filter(text: "pantalon", departamentos: [], municipios: [], rebajados: false)
do {
let data = try JSONEncoder().encode(filter)
let string = String(data: data, encoding: .utf8)!
print(string) // {"rebajados":false,"municipios":[],"departamentos":[],"text":"pantalon"}
} catch {
print(error)
}