如何从可编码结构中的空数组中删除双引号

时间:2019-06-19 18:57:12

标签: swift codable

我正在通过URLSession发出POST请求。我需要在请求正文中发送以下字符串:

  

def u_row(row, id_val): if row['uniqueid'] == id_val: return 1 for item in res_df_union['uniqueid']: if item in vacant_res_ids: res_df_union['Has_Res_Association'] = res_df_union.apply(lambda row: u_row(row, item), axis = 1)

所以我定义了一个结构来使用可编码发送数据作为请求主体。结构就是这个。

summaryWidget

但是我发的是这个

{"rebajados": false, "text": "pantalon", "municipios": [], "departamentos": []}

由于struct filter: Codable { var text: String? var departamentos: [String]? var municipios: [String]? var rebajados = false } 使后端丢失,因此后端不返回结果。 那么,将数组变成没有双{ "departamentos": [ "" ], "municipios": [ "" ], "rebajados": false, "text": "pantalon" } 的空数组的可行方法是什么?

注意:我无法修改后端以接受带有空字符串的数组。

2 个答案:

答案 0 :(得分:0)

尝试

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

答案 1 :(得分:0)

首先请用首字母大写来命名结构。

空字符串数组被编码为空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)
}