简体   繁体   English

JSON使用Swift中的objectmapper库解析问题

[英]Json parsing Issue using objectmapper library in swift

I am facing issue with parsing response from server side. 我从服务器端解析响应时遇到问题。 I get response in this format 1.) 我得到这种格式的回复1.) 在此处输入图片说明 For first image my model class is working fine. 对于第一个图像,我的模型类工作正常。 In this I don't null 在这个我不为空

2.) 2.) 在此处输入图片说明 For second image response my Model class is not working it's giving nil after parsing.In this I get null in array 对于第二个图像响应,我的Model类不起作用,解析后给出nil。在这种情况下,我在数组中得到null

My Model class for my api response is this 我的api响应的Model类是这个

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"]
}
}

If there is no data available then send empty array not null . 如果没有可用数据,则发送不为null空数组。 Even in myKpiMonthList doesn't contain null array. 即使在myKpiMonthList中也不包含null数组。 There is no logic that null value in array at index 2. 在索引2的数组中没有null值是没有逻辑的。

You can send empty string or empty array even. 您甚至可以发送空字符串或空数组。 Still there is no any logic for the null value. 对于空值仍然没有任何逻辑。

Either handle all null value from server side else it always crash. 从服务器端处理所有null值,否则它将始终崩溃。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM