Convertir un array en json desde swift – ios json swift

Pregunta:


Necesito convertir un array de strings que obtengo de un xml, en un archivo json para luego poderlo guardar en una base de datos sqlite.

Tengo este código:

do {
   let jsonData = try NSJSONSerialization.dataWithJSONObject(dictionaryOrArray, options: NSJSONWritingOptions.PrettyPrinted)
} catch let error as NSError{
    print(error.description)
}

Pero me da este error:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid type in JSON write'

El array le creo en el parser xml:

func parser(parser: NSXMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {
    if elementName == "title" {
        let title: String = foundCharacters.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
        self.currentlyConstructingArticle.titulo = title
    }
    else if elementName == "img" {
        let imgString:String = foundCharacters.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
        self.currentlyConstructingArticle.imagen = imgString
    }
    else if elementName == "description" {
        let descripcion: String = foundCharacters.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
        self.currentlyConstructingArticle.descripcion = descripcion
    }
    else if elementName == "item" {
        self.articles.append(self.currentlyConstructingArticle)
    }

    self.foundCharacters = ""
}

Preguntado por:

Para swift 3:

Dado un arreglo x de strings

let stringArray = [ "string1", "string2" ]

Creas el JSON a partir del arreglo

let jsonData = try JSONSerialization.data(withJSONObject: stringArray, options: .prettyPrinted)

Si quieres comprobar vuelves a convertir el JSON a string

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

Si tienes algún problema es con el arreglo de strings que estás probando

let array = [ "one", "two" ]
let data = NSJSONSerialization.dataWithJSONObject(array, options: nil, error: nil)
let string = NSString(data: data!, encoding: NSUTF8StringEncoding)

Fuente

Tags:, ,

Add a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *