使用 sqlite 数据库将字符串转换为 json 数组
Converting string to json array with sqlite data base
你好,我正在将实时 api 数据存储在 sqlite table 中,之后当用户打开互联网时我再次检索我在字符串中成功检索但随后我想将该数据转换为 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 数组中转换无法理解请帮助某人。
cellForRowAt
绝对是数据转换错误的地方
使用 Encodable
协议的简单解决方案
删除
var mainLocalArray = [Any]()
let arrayLocal = ["\(id)", "\(pro_ID)", housnumber!] as [Any]
print(arrayLocal)
self.mainLocalArray.append(arrayLocal)
print(mainLocalArray)
在您的结构中(propertyLocalData
的类型)添加 Encodable
和 CodingKeys
struct MyStruct : Encodable {
...
private enum CodingKeys : String, CodingKey { case id = "properties_id", house_number }
... }
在一个方法中(not in cellForRow
)对数据源数组进行编码
do {
let jsonData = try JSONEncoder().encode(propertyLocalData)
let jsonString = String(data: jsonData, encoding: .utf8)!
print(jsonString)
} catch { print(error) }
PS:删除 SwiftyJSON。
你好,我正在将实时 api 数据存储在 sqlite table 中,之后当用户打开互联网时我再次检索我在字符串中成功检索但随后我想将该数据转换为 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 数组中转换无法理解请帮助某人。
cellForRowAt
绝对是数据转换错误的地方
使用 Encodable
协议的简单解决方案
删除
var mainLocalArray = [Any]() let arrayLocal = ["\(id)", "\(pro_ID)", housnumber!] as [Any] print(arrayLocal) self.mainLocalArray.append(arrayLocal) print(mainLocalArray)
在您的结构中(
propertyLocalData
的类型)添加Encodable
和CodingKeys
struct MyStruct : Encodable { ... private enum CodingKeys : String, CodingKey { case id = "properties_id", house_number } ... }
在一个方法中(not in
cellForRow
)对数据源数组进行编码do { let jsonData = try JSONEncoder().encode(propertyLocalData) let jsonString = String(data: jsonData, encoding: .utf8)! print(jsonString) } catch { print(error) }
PS:删除 SwiftyJSON。