Преобразование унаследованного класса в JSON в Swift 4.2 - PullRequest
0 голосов
/ 28 июня 2019

Я новичок в 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?

...