Je sais qu'il y a une question avec le même titre ici . Mais dans cette question, il essaie de convertir un dictionnaire en JSON. Mais j'ai une piqûre simple comme celle-ci: "jardin"
Et je dois l'envoyer en JSON. J'ai essayé SwiftyJSON mais je ne parviens toujours pas à le convertir en JSON.
Voici mon code:
func jsonStringFromString(str:NSString)->NSString{
let strData = str.dataUsingEncoding(NSUTF8StringEncoding)
let json = JSON(data: strData!)
let jsonString = json.string
return jsonString!
}
Mon code plante à la dernière ligne:
fatal error: unexpectedly found nil while unwrapping an Optional value
Est-ce que je fais quelque chose de mal?
JSON doit être un tableau ou un dictionnaire , il ne peut pas s'agir uniquement d'une chaîne.
Je vous suggère de créer un tableau contenant votre chaîne:
let array = ["garden"]
Ensuite, vous créez un objet JSON à partir de ce tableau:
if let json = try? NSJSONSerialization.dataWithJSONObject(array, options: []) {
// here `json` is your JSON data
}
Si vous avez besoin de ce JSON en tant que chaîne au lieu de données, vous pouvez utiliser ceci:
if let json = try? NSJSONSerialization.dataWithJSONObject(array, options: []) {
// here `json` is your JSON data, an array containing the String
// if you need a JSON string instead of data, then do this:
if let content = String(data: json, encoding: NSUTF8StringEncoding) {
// here `content` is the JSON data decoded as a String
print(content)
}
}
Tirages:
["jardin"]
Si vous préférez avoir un dictionnaire plutôt qu'un tableau, suivez la même idée: créez le dictionnaire puis convertissez-le.
let dict = ["location": "garden"]
if let json = try? NSJSONSerialization.dataWithJSONObject(dict, options: []) {
if let content = String(data: json, encoding: NSUTF8StringEncoding) {
// here `content` is the JSON dictionary containing the String
print(content)
}
}
Tirages:
{"emplacement": "jardin"}
Version Swift 3:
let location = ["location"]
if let json = try? JSONSerialization.data(withJSONObject: location, options: []) {
if let content = String(data: json, encoding: .utf8) {
print(content)
}
}