使用SQLite数据库将字符串转换为JSON数组

时间:2019-03-15 07:17:14

标签: arrays json swift swifty-json

你好,我将实时api数据存储在sqlite表中,然后在用户打开Internet时再次检索我以字符串形式成功检索,但是我想将数据转换为json数组,如下所示

预期产量

[{"properties_id":"1234","house_number":"1"},{"properties_id":"1234","house_number":"2"}]

我已尝试进行转换,我将向您显示我尝试过的代码,但输出如下错误的消息

我得到的输出

[["17", "1", "1234"], ["18", "2", "1234"]]

这是我的代码

var mainLocalArray = [Any]()

  func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

            let cell = tableView.dequeueReusableCell(withIdentifier: "Cell") as! ProjectsTableViewCell
            let name = propertyLocalData[indexPath.row].house_number
            cell.lblProjectsName.text = "\(name!)"
            cell.viewVisitView.backgroundColor = UIColor(red: 86/255, green: 35/255, blue: 127/255, alpha: 1)
            let id = propertyLocalData[indexPath.row].id
            let pro_ID  = propertyLocalData[indexPath.row].proID
            let housnumber = propertyLocalData[indexPath.row].house_number
            let arrayLocal = ["\(id)", "\(pro_ID)", housnumber!] as [Any]
            print(arrayLocal)
            self.mainLocalArray.append(arrayLocal)
            print(mainLocalArray)
            return cell
    }

我正在创建从数据库中获取的值数组,并将其附加到其他mainlocalarray中,但是如何在无法理解的json数组中进行转换,请帮忙。

1 个答案:

答案 0 :(得分:1)

cellForRowAt绝对是错误的数据转换位置。

使用Encodable协议的简单解决方案

  • 删除

    var mainLocalArray = [Any]()
    
    
    let arrayLocal = ["\(id)", "\(pro_ID)", housnumber!] as [Any]
    print(arrayLocal)
    self.mainLocalArray.append(arrayLocal)
    print(mainLocalArray)
    

  • 在您的结构(propertyLocalData类型)中,添加EncodableCodingKeys

    struct MyStruct : Encodable {
    
    ...
    
        private enum CodingKeys : String, CodingKey { case id = "properties_id", house_number }
    
    ... }
    
  • 使用一种方法(在cellForRow)对数据源数组进行编码

    do {
       let jsonData = try JSONEncoder().encode(propertyLocalData)
       let jsonString = String(data: jsonData, encoding: .utf8)!
       print(jsonString)
    } catch { print(error) }
    

PS:删除SwiftyJSON。