【问题标题】:How to map this JSON using ObjectMapper?如何使用 ObjectMapper 映射这个 JSON?
【发布时间】:2016-06-15 11:54:54
【问题描述】:

我正在从 Web 服务获取此 JSON 响应。我能够理解文件的结构。

 {"response":200,"message":"fetch successfully","data":[
{"id":1,"question":"Are you currently exercising regularly?","choices":{"too_lazy":"Too lazy","times_1_3_week":"1-3 times a week","i_love_it":"I just love it!"},"answer_select":"single"},
{"id":2,"question":"Are you active member of Gym?","choices":{"yes":"Yes","no":"No"},"answer_select":"single"}]
 }

这就是我目前所拥有的

import Foundation
import UIKit
import ObjectMapper

class YASUserQuestion: Mappable {

var question: String
var id: Int
var choices: [YASExercisingQuestionChoices]
required init?(_ map: Map) {
    question = ""
    id = 0
    choices = []

}

func mapping(map: Map) {

    question        <- map["question"]
    id              <- map["id"]
    choices         <- map["choices"]
}
}

class YASExercisingQuestionChoices: Mappable {

var tooLazy: String
var times_1_3_Week: String
var ILoveIt: String

required init?(_ map: Map) {

    tooLazy = ""
    times_1_3_Week = ""
    ILoveIt = ""

}

func mapping(map: Map) {

    tooLazy             <- map["too_lazy"]
    times_1_3_Week      <- map["times_1_3_week"]
    ILoveIt             <- map["i_love_it"]
}
}

class YASGymMemberQuestionChoices: Mappable {

var yes: String
var no: String


required init?(_ map: Map) {

    yes = ""
    no = ""

}

func mapping(map: Map) {

    yes             <- map["yes"]
    no              <- map["no"]

}
} 

我不确定如何映射此 JSON 响应,请指导我如何映射此 JSON ???

【问题讨论】:

  • 你是如何从服务器获取 JSON 的,我的意思是你是获取它并将其保存为 [String: AnyObject] 的字符串或字典,还是使用 SwiftyJSON 之类的辅助库?
  • 我看到一个问题:在您的 JSON 中,“choices”是一个字典,但您已经在代码中声明了一个数组。

标签: ios json swift objectmapper


【解决方案1】:

这将是您的类结构。制作完这些类之后,接下来您只需使用 ObjectMapper 映射您的 JSON。

import UIKit
import ObjectMapper
class UserResponse: NSObject,Mappable {

        var message: String?
        var response: String?
        var data: [DataClass]?

        override init() {
            super.init()
        }

        convenience required init?(map: Map) {
            self.init()
        }


        func mapping(map: Map) {
            message <- map["message"]
            response <- map["response"]
            data <- map["data"]
        }
    }

    class DataClass: NSObject,Mappable {

        var answer_select: String?
        var ID: String?
        var question: String?
        var choices: [ChoicesClass]?

        override init() {
            super.init()
        }

        convenience required init?(map: Map) {
            self.init()
        }


        func mapping(map: Map) {
            answer_select <- map["answer_select"]
            ID <- map["id"]
            question <- map["question"]
            choices <- map["choices"]
        }
    }

    class ChoicesClass: NSObject,Mappable {

        var i_love_it: String?
        var times_1_3_week: String?
        var too_lazy: String?

        override init() {
            super.init()
        }

        convenience required init?(map: Map) {
            self.init()
        }


        func mapping(map: Map) {
            i_love_it <- map["i_love_it"]
            times_1_3_week <- map["times_1_3_week"]
            too_lazy <- map["too_lazy"]
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-31
    • 2016-11-15
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    • 2016-05-25
    • 2018-03-28
    • 2017-04-26
    相关资源
    最近更新 更多