Writing JSON file programmatically swift

前端 未结 3 1958
青春惊慌失措
青春惊慌失措 2021-01-07 12:04

im making quiz app and I want to download questions from server in JSON file, parse it and make question object that I will present. I did it so now I want to make an app th

3条回答
  •  终归单人心
    2021-01-07 12:21

    Swift 3/4

    Save Json data in local file

    func saveUploadedFilesSet(fileName:[String : Any]) {
            let file: FileHandle? = FileHandle(forWritingAtPath: "\(fileName).json")
    
            if file != nil {
                // Set the data we want to write
                do{
                    if let jsonData = try JSONSerialization.data(withJSONObject: fileName, options: .init(rawValue: 0)) as? Data
                    {
                        // Check if everything went well
                        print(NSString(data: jsonData, encoding: 1)!)
                        file?.write(jsonData)
    
                        // Do something cool with the new JSON data
                    }
                }
                catch {
    
                }
                // Write it to the file
    
                // Close the file
                file?.closeFile()
            }
            else {
                print("Ooops! Something went wrong!")
            }
        }
    

    Swift 3/4 Retrive json data from local file

    func getUploadedFileSet(filename:String) {
        if let path = Bundle.main.path(forResource: "assets/\(filename)", ofType: "json") {
            do {
                let data = try Data(contentsOf: URL(fileURLWithPath: path), options: .mappedIfSafe)
                let jsonResult = try JSONSerialization.jsonObject(with: data, options: .mutableLeaves)
                if let jsonResult = jsonResult as? Dictionary, let person = jsonResult["person"] as? [Any] {
                    // do stuff
                }
            } catch let error {
                print("parse error: \(error.localizedDescription)")
            }
        } else {
            print("Invalid filename/path.")
        }
    }
    

    else you can convert [String:Any] Object to json

    import Foundation
    
    // Dictionary containing data as provided in your question.
    var dictonary : [String : Any] = ["question":"If you want to create a custom class which can be displayed on the view, you can subclass UIView.",
                                      "answers":["True", "False"],
                                      "correctIndex":0,
                                      "module":3,
                                      "lesson":0,
                                      "feedback":"Subclassing UIView gives your class the methods and properties of a basic view which can be placed onto the view."
                                     ]
    
    
    if let jsonData = try JSONSerialization.data(withJSONObject: dictonary, options: .init(rawValue: 0)) as? Data
    {
        // Check if everything went well
        print(NSString(data: jsonData, encoding: 1)!)
    
        // Do something cool with the new JSON data
    }
    

提交回复
热议问题