ios - 如何映射具有数据数组的数据
问题描述
我的回应是:
[
{
"menu_code" : "NDS",
"items" : [
{
"unit" : "Nos",
"name" : "Chapathi\/Pulkas",
"quantity" : 2
},
{
"unit" : "Cup",
"name" : "Palya\/Curry",
"quantity" : 1
}
],
"is_active" : 1,
"image" : "nds.jpg",
"menu_name" : "Normal Diet South"
},
{
"menu_code" : "NCCD",
"items" : [
{
"menu_code" : "NDS",
"name" : "Monday"
},
{
"menu_code" : "NDN",
"name" : "Tuesday"
}
],
"is_active" : 1,
"image" : "NCCD.jpg",
"menu_name" : "Normal Combo Corporate Diet"
}
]
今天我有两种格式。在这两种格式中,只有我的数据来自响应。我需要在集合视图中显示它们。
我的 api 调用:
func getAllCatogory(){
TransportManager.sharedInstance.AllCatogory { (dt, err) in
if let _ = err{
}else{
if let data = dt as? String {
let pro = Mapper<AllCatagories>().map(JSONString: data)
print(data) // getting data
print(pro as Any) // getting nil
}
}
}
}
我的模型:
class AllCatagories: Mappable{
var menu_code = ""
var items: Array<AllCatProducts> = []
var is_active = 0
var image = ""
var menu_name = ""
required init?(map: Map) {
}
init() {
}
func mapping(map: Map) {
menu_name <- map["menu_name"]
is_active <- map["is_active"]
menu_code <- map["menu_code"]
image <- map["image"]
items <- map["items"]
}
}
下面我为我的 json 中的项目创建了一个模型类。
class AllCatProducts: Mappable{
var name = ""
var quantity = 0
var unit = ""
var menu_code = ""
required init?(map: Map) {
}
init() {
}
func mapping(map: Map) {
name <- map["name"]
quantity <- map["quantity"]
unit <- map["unit"]
menu_code <- map["menu_code"]
}
}
问题是我的. 不pro
知道我什么时候做错了。
谢谢
解决方案
你可以试试
struct AllCatagories: Codable {
let menuCode: String
let items: [AllCatProducts]
let isActive: Int
let image, menuName: String
}
struct AllCatProducts: Codable {
let unit: String?
let name: String
let quantity: Int?
let menuCode: String?
}
do {
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
guard let str = dt as? String else { return }
let res = try decoder.decode([AllCatagories].self, from:str.data(using: .utf8)!)
print(res)
}
catch {
print(error)
}
推荐阅读
- javascript - 如何使用 AJAX 和 Flask 在 python 服务器和 javascript 客户端之间进行通信?
- flutter - 需要帮助了解如何将颤振与 Spotify 等 3rd 方 API 一起使用
- sql - 日期范围内的 SQL PIVOT
- animation - 向现有 mixamo FBX 模型 three.js 添加不同的动画
- node.js - 是否可以使用 firebase 云消息传递和 node.js 服务器仅向活动客户端发送推送通知
- html - 为什么 flex 元素的高度没有逐渐过渡?
- python - 在 Pandas 中,如何快速将数字列转换为离散值?
- sendgrid - 来自 SendGrid 的确认电子邮件以垃圾邮件告终
- ssh - 无法通过 SSH 保存到 crontab,但在本地登录时可以
- react-native - TabOneScreen({ navigation }) 的导航类型是什么?