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

Json parsing Issue using objectmapper library in swift

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

2.) 对于第二个图像响应,我的模型 class 不工作它在 parsing.In 之后给出 nil 我在数组

中得到 null

我的模型 class 我的 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 值,否则它总是崩溃。