将字符串转换为[[String]]

阿纳托利·鲁登科(Anatoly Rudenko)

[[String]]用来填充我的收藏夹视图单元格。

我使用API​​获取此数据:

{
  identifier: {
    channel: "WorldChannel",
    id: 1
  },
  message: {
    map: "[[null,null,\"penguin\",null,\"penguin\",null,null],[null,\"penguin\",\"penguin\",\"penguin\",\"orca...ll,null,\"penguin\",null,null,null],[\"penguin\",\"penguin\",\"penguin\",null,null,null,null,null]]"
  }
}

要获取地图值,请使用:

struct ResponseData: Codable {
    let message: Message
}
struct Message: Codable {
    let map: String
}

我尝试使用mapas,[[String]]但是解码给了我以下错误:
CodingKeys(stringValue:“ map”,intValue:nil)],debugDescription:“预期对数组进行解码,但找到了一个字符串/数据。尽管其中包含的内容显然是二维数组,但由于map包裹了价值,这似乎很公平" "
解码部分:

let jsonData = string.data(using: .utf8)!
let responseData = try! JSONDecoder().decode(ResponseData.self, from: jsonData)
mapAsString = responseData.message.map

print(maAsString!) 结果是:

[[null,"penguin","orca",...],...,[..."penguin",null,null]]

我想做的是类似的事情,mapAs2DArray = mapAsString as! [[String]]但是Xcode说它总是失败。如何更改数据类型?如何替换nullnil或使用其他任何值?

Sh_Khan

您需要将json字符串转换为数组

 let data = Data(responseData.message.map.utf8)
 let arr = try JSONDecoder().decode([[String?]].self,from:data)
 let filtered  = arr.map { $0.compactMap{ $0 } } // remove null values 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章