Comment convertir une chaîne JSON dans un dictionnaire?
Je veux faire une fonction dans ma swift projet qui convertit une Chaîne Dictionnaire format json mais j'ai eu un message d'erreur:
Ne peut pas convertir l'expression du type (@lvalue NSData,options:IntegerLitralConvertible ...
C'est mon code:
func convertStringToDictionary (text:String) -> Dictionary<String,String> {
var data :NSData = text.dataUsingEncoding(NSUTF8StringEncoding)!
var json :Dictionary = NSJSONSerialization.JSONObjectWithData(data, options:0, error: nil)
return json
}
- Je faire de cette fonction en Objective-C :
- (NSDictionary*)convertStringToDictionary:(NSString*)string {
NSError* error;
//giving error as it takes dic, array,etc only. not custom object.
NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding];
id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
return json;
}
- Quelle est la valeur et ket vous voulez dans le dictionnaire?
- - Je mettre à jour ma question... @Amit89 a pas d'importance quelle est la valeur et la clé!!!
- Je veux quand donner le texte à la fonction de retour json format du dictionnaire
let jsonDictionary = try JSONSerialization.jsonObject(with: jsonData, options: []) as! [String: String];
Vous devez vous connecter pour publier un commentaire.
Avertissement: c'est une méthode pratique pour convertir une chaîne JSON dans un dictionnaire si, pour une raison quelconque, vous devez travailler à partir d'une chaîne JSON. Mais si vous avez le JSON données disponible, vous devez plutôt travailler avec les données, sans l'aide d'une chaîne à tous.
Swift 3
Swift 2
Original Swift 1 réponse:
Dans votre version, vous n'avez pas à passer les bons paramètres pour
NSJSONSerialization
et j'ai oublié de jeter le résultat. Aussi, il est préférable de vérifier la possible erreur. Dernière remarque: cela ne fonctionne que si votre valeur est une Chaîne de caractères. Si cela peut être un autre type, il serait préférable de déclarer le dictionnaire de conversion comme ceci:et bien vous avez aussi besoin de changer le type de retour de la fonction:
J'ai mis à jour Eric D réponse pour Swift 2:
Swift 3:
Avec Swift 3,
JSONSerialization
a une méthode appeléejsonObject(avec:options:)
.jsonObject(with:options:)
a la déclaration suivante:Lorsque vous utilisez
jsonObject(with:options:)
, vous avez à traiter avec la gestion des erreurs (try
,try?
outry!
) et la conversion de type (deAny
). Par conséquent, vous pouvez résoudre votre problème avec l'un des modèles suivants.#1. À l'aide d'une méthode qui génère et renvoie un non-type facultatif
Utilisation:
#2. À l'aide d'une méthode qui génère et renvoie un type facultatif
Utilisation:
#3. À l'aide d'une méthode qui ne le jetez pas et renvoie un non-type facultatif
Utilisation:
#4. À l'aide d'une méthode qui ne le jetez pas et renvoie un type facultatif
Utilisation:
Swift 4
J'ai trouvé un code qui convertit la chaîne json à NSDictionary ou NSArray. Juste ajouter l'extension.
SWIFT 3.0
COMMENT UTILISER
EXTENSION
}
NSMutable...
types de collection en Swift à tous. Type de fonte àNSMutable...
ne sera jamais le résultat d'un objet mutable. Et un type non spécifié dans Swift 3+ estAny
, pasAnyObject
.