在Swift 4.2中将继承的类转换为JSON

时间:2019-06-28 20:04:20

标签: swift ios12

我是Swift的新手,我正在尝试使用此JSON

{
"title": "newSurvey",
"pages": [
    {
        "questions": [
            {
                "title": "Untitled Question",
                "type": "QUESTION_SLIDER",
                "content": {
                    "min": "1",
                    "max": "10",
                    "step": "3",
                    "defaultValue": "5"
                }
            },
            {
                "title": "asdasddfdf",
                "type": "QUESTION_TEXT",
                "choices": ["choice1","choice2"]
            }
        ]
    }
]}

我正在将子类转换为JSON 我考虑过将代码分成三个对象,然后将它们添加到最终对象中 jsonEncoder中的字符串 这就是我所做的

public class Question : Encodable {
var title : String?
var description: String?
init(_ title: String , _ desc: String) {
    self.title = title
    self.description = desc
}}
struct Questions : Encodable{
var questions : [Question]
 }


class Create : Encodable {
var title : String?
var pages : [Questions] = []
init(_ title:String , _ q : Questions) {
    self.title = title
    self.pages.append(q)
}
func postData () -> String{

    let jsonEncoder = JSONEncoder()

    do {
          jsonEncoder.outputFormatting = .prettyPrinted
        let jsonData = try jsonEncoder.encode([self])

        let json = String(data: jsonData ,encoding: .utf8)

        print( json!)
        return json!
    }
    catch {
        print("Error")
    }
    return ""
       }

class Content :Encodable {
init(_ min : Int , _ max : Int){
    self.min = min
    self.max = max
}
var min : Int?
var max : Int?
var minLabel : String?
var maxLabel : String?
var defaultValue : Int?
var step : Int?
 }

class SliderQuestion :Question  {

let TYPE = "SHORT TEXT"

var content = Content(0,2)
 init(_ title: String, _ desc: String,_ content : Content ) {
    self.content = content
    super.init(title, desc)
}
    }

对冗长的代码感到抱歉,但是我想澄清一下我的想法,有什么办法可以将子类转换为JSON吗?

0 个答案:

没有答案