Vérifiez si la réponse de l'API JSON valide
Est-il un moyen avec NSJSONSerialization
pour vérifier que le NSData
est JSON valide? Je ne veux pas l'application à l'erreur si l'API retourne invalid JSON pour une raison quelconque.
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:url]];
NSError *error;
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
OriginalL'auteur Bot | 2012-03-29
Vous devez vous connecter pour publier un commentaire.
Ce ne sera pas "l'erreur", il va tout simplement retourner nil si le JSON n'est pas valide. Donc le test pour voir si elle est valide JSON serait:
Si elle retourne
nil
, alors vous pouvez vérifiererror
pour voir ce qui n'allait pas.OriginalL'auteur hypercrypt
NSJSONSerialization
Classe possède une méthode pour faire exactement cela... (EDIT: non, il n'est pas...)EDIT: (Après hypercrypts' commentaire)
Hypercrypt est à droite (je ne comprends vraiment pas comment j'ai manqué)...
Même si ma réponse semble être au travail, c'est mal.
Ce
isValidJSONObject:
méthode n'est pour vérifier si un objet peut être sérialisé en JSON et non l'inverse. Si sa réponse est ce que vous cherchez. Vous pouvez utiliser bien que cette méthode dans le cas où vous prenez une mutable copie à partir d'une charge utile json, de muter et plus tard pour vérifier si il est sûr d'essayer et re-sérialiser retour à une chaîne JSON. Mais la ligne de fond est que hypercrypt réponse est la bonne et je pense qu'il serait plus juste de marquer sa réponse comme correcte au lieu de la mienne. De toute façon, désolé pour la confusion et @hypercrypt merci pour souligné 🙂-[NSJSONSerialization isValidJSONObject:]
est pour. C'est pour vérifier que l'arbitraire d'un tableau ou dictionnaire est valide pour être transformé en une chaîne JSON.merci pour pointer, vérifier mon édité réponse...
Merci @hypercrypt - La documentation sur ce n'est pas très bonne. Je pensais que je devenais fou.
pas de travail pour moi...même si son json valide son montrant non valide
OriginalL'auteur Alladinian
Il n'est pas vraiment un moyen de vérifier les données sans créer l'objet avec NSJSONSerialization; je voudrais le mettre dans un try-catch. Si vous vous retrouvez dans le bloc catch, il n'est pas valide JSON.
EDIT: Venez pour penser à elle, si elle a rencontré une erreur "erreur" est une erreur de l'objet. Donc, même si rien n'est jeté, vous pouvez vérifier pour voir si les données sont valides.
OriginalL'auteur JoshRagem