ios - 在swift中使用objectmapper库的Json解析问题

标签 ios iphone swift3 objectmapper

我在解析来自服务器端的响应时遇到问题。我收到这种格式的回复 1.) enter image description here 对于第一张图片,我的模型类工作正常。在此我不为空

2.) enter image description here 对于第二个图像响应,我的模型类无法正常工作,它在解析后给出 nil。在此,我在数组中得到 null

我的 api 响应的模型类是这个

class GetTodayMyKpiResponse: Mappable{

var status: String?
var myKpiMonth: MyKpiMonthResponse?
var myKpiWeek: MyKpiWeekResponse?


required init?(map: Map){

}

func mapping(map: Map) {
    status <- map["status"]
    myKpiMonth <- map["myKpiMonth"]
    myKpiWeek <- map["myKpiWeek"]
}

}

class MyKpiMonthResponse: Mappable{
var myKpiMonthYear: Double?
var myKpiMonthDetailList: [MyKpiMonthDetailResponse]?
var myKpiMonthList: [MyKpiMonthListReponse]?

required init?(map: Map) {

}

func mapping(map: Map) {
    myKpiMonthYear <- map["myKpiMonthYear"]
    myKpiMonthDetailList <- map["myKpiMonthDetail"]
    myKpiMonthList <- map["myKpiMonthList"]
}
}

class MyKpiMonthDetailResponse: Mappable{
var myKpiMonthDetailOutletCode: String?
var myKpiMonthDetailUnitTiers: [String]?
var myKpiMonthDetailTargetUnits: [String]?
var myKpiMonthDetailBonusIncentive: Double?
var myKpiMonthDetailOutletName: String?
var myKpiMonthDetailModelName: [String]?
var myKpiMonthDetailMonth: String?
var myKpiMonthDetailType: Double?

required init?(map: Map) {

}

func mapping(map: Map) {
    myKpiMonthDetailOutletCode <- map["myKpiMonthDetailOutletCode"]
    myKpiMonthDetailUnitTiers <- map["myKpiMonthDetailUnitTiers"]
    myKpiMonthDetailTargetUnits <- map["myKpiMonthDetailTargetUnits"]
    myKpiMonthDetailBonusIncentive <- map["myKpiMonthDetailBonusIncentive"]
    myKpiMonthDetailOutletName <- map["myKpiMonthDetailOutletName"]
    myKpiMonthDetailModelName <- map["myKpiMonthDetailModelName"]
    myKpiMonthDetailMonth <- map["myKpiMonthDetailMonth"]
    myKpiMonthDetailType <- map["myKpiMonthDetailType"]
}
}

class MyKpiMonthListReponse: Mappable {
var myKpiMonthMaxUnit: Double?
var myKpiMonthDate: String?
var myKpiMonthBonusAmount: Double?
var myKpiMonthActivatedUnit: Double?
var myKpiMonthMinUnit: Double?
var myKpiMonthCurrentUnit: Double?
var myKpiMonthBonusStatus: String?
var myKpiMonthOutletName: String?
var myKpiMonthOutletAddress: String?

required init?(map: Map) {

}

func mapping(map: Map) {
    myKpiMonthMaxUnit <- map["myKpiMonthMaxUnit"]
    myKpiMonthDate <- map["myKpiMonthDate"]
    myKpiMonthBonusAmount <- map["myKpiMonthBonusAmount"]
    myKpiMonthActivatedUnit <- map["myKpiMonthActivatedUnit"]
    myKpiMonthMinUnit <- map["myKpiMonthMinUnit"]
    myKpiMonthCurrentUnit <- map["myKpiMonthCurrentUnit"]
    myKpiMonthBonusStatus <- map["myKpiMonthBonusStatus"]
    myKpiMonthOutletName <- map["myKpiMonthOutletName"]
    myKpiMonthOutletAddress <- map["myKpiMonthOutletAddress"]
}
}

class MyKpiWeekResponse: Mappable{
var myKpiWeekDetail: [MyKpiWeekDetailResponse]?
var myKpiWeekList: [MyKpiWeekListResponse]?
var myKpiWeekYear: Double?
var myKpiWeekMonth: Double?

required init?(map: Map) {

}

func mapping(map: Map) {

    myKpiWeekDetail <- map["myKpiWeekDetail"]
    myKpiWeekList <- map["myKpiWeekList"]
    myKpiWeekYear <- map["myKpiWeekYear"]
    myKpiWeekMonth <- map["myKpiWeekMonth"]
}
}

class MyKpiWeekDetailResponse: Mappable{
var myKpiWeekDetailEndDate: String?
var myKpiWeekDetailUnitTiers: [String]?
var myKpiWeekDetailOutletName: String?
var myKpiWeekDetailStartDate: String?
var myKpiWeekDetailType: Double?
var myKpiWeekDetailModelName: [String]?
var myKpiWeekDetailTypeOfReward: String?
var myKpiWeekDetailOutletCode: String?
var myKpiWeekDetailTargetUnits: [String]?

required init?(map: Map) {

}

func mapping(map: Map) {
    myKpiWeekDetailEndDate <- map["myKpiWeekDetailEndDate"]
    myKpiWeekDetailUnitTiers <- map["myKpiWeekDetailUnitTiers"]
    myKpiWeekDetailOutletName <- map["myKpiWeekDetailOutletName"]
    myKpiWeekDetailStartDate <- map["myKpiWeekDetailStartDate"]
    myKpiWeekDetailType <- map["myKpiWeekDetailType"]
    myKpiWeekDetailModelName <- map["myKpiWeekDetailModelName"]
    myKpiWeekDetailTypeOfReward <- map["myKpiWeekDetailTypeOfReward"]
    myKpiWeekDetailOutletCode <- map["myKpiWeekDetailOutletCode"]
    myKpiWeekDetailTargetUnits <- map["myKpiWeekDetailTargetUnits"]
}
}

class MyKpiWeekListResponse: Mappable {
var myKpiWeekBonusStatus: String?
var myKpiWeekEndDate: String?
var myKpiWeekActivatedUnit: Double?
var myKpiWeekStartDate: String?
var myKpiWeekMinUnit: Double?
var myKpiWeekCurrentUnit: Double?
var myKpiWeekOutletName: String?
var myKpiWeekTypeOfReward: String?
var myKpiWeekOutletAddress: String?
var myKpiWeekMaxUnit: Double?

required init?(map: Map) {

}

func mapping(map: Map) {
    myKpiWeekBonusStatus <- map["myKpiWeekBonusStatus"]
    myKpiWeekEndDate <- map["myKpiWeekEndDate"]
    myKpiWeekActivatedUnit <- map["myKpiWeekActivatedUnit"]
    myKpiWeekStartDate <- map["myKpiWeekStartDate"]
    myKpiWeekMinUnit <- map["myKpiWeekMinUnit"]
    myKpiWeekCurrentUnit <- map["myKpiWeekCurrentUnit"]
    myKpiWeekOutletName <- map["myKpiWeekOutletName"]
    myKpiWeekTypeOfReward <- map["myKpiWeekTypeOfReward"]
    myKpiWeekOutletAddress <- map["myKpiWeekOutletAddress"]
    myKpiWeekMaxUnit <- map["myKpiWeekMaxUnit"]
}
}

最佳答案

如果没有可用数据,则发送空数组而不是 null。即使在 myKpiMonthList 中也不包含 null 数组。在索引 2 处的数组中没有 null 值的逻辑。

您甚至可以发送空字符串或空数组。空值仍然没有任何逻辑。

要么从服务器端处理所有 null 值,否则它总是崩溃。

关于ios - 在swift中使用objectmapper库的Json解析问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49378497/

相关文章:

ios - iOS8 中 UITextField 默认的 borderColor 是什么?

ios - 我想在 dispatch_async 任务之后移动到另一个 View Controller

ios - UIDatePicker 设置 UITextfield 文本

iphone - 将 xib 从一个项目复制到另一个项目

ios - 如何更改 CreationDate 资源值

javascript - WKWebView javascript 警报、提示、确认不起作用

ios - 有谁知道如何呈现像 UIAlertController 这样的 SelectFooViewController

iphone - 如何将自定义图像添加到导航栏并保持 back 方法完好无损?

iphone - 吸头使用

swift3 - Realm Swift 回调函数