как удалить двойную кавычку из пустого массива в кодируемой структуре - PullRequest
0 голосов
/ 19 июня 2019

Я делаю POST-запрос с URLSession.Мне нужно отправить следующую строку в теле запроса:

{"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"
}

Бэкэнд не возвращает результата, потому что [""] делает его потерянным.Итак, как можно сделать массив пустым массивом без двойного ""?

Примечание: я не могу изменить бэкэнд, чтобы он принимал массив с пустой строкой.

Ответы [ 2 ]

0 голосов
/ 19 июня 2019

Прежде всего, пожалуйста, укажите структуру имени с начальной заглавной буквой.

Пустой массив строк кодируется как пустой массив 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)
}
0 голосов
/ 19 июня 2019

Попробуйте

  struct filter:Codable {
    var text: String?
    var departamentos: [String] = []
    var municipios: [String] = []
    var rebajados = false
   }
...