NSJSONSerialization renvoie la string "<null>"

J'essaye de placer un NSDictionary à un object JSON récupéré du server, je le fais dans cette ligne:

_peopleArray = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; 

Cela fonctionne bien et crée correctement le dictionary. Cependant, j'ai un problème, les valeurs null dans l'object JSON sont stockées sous forme de valeurs de string "<null>" dans le dictionary. Est-il possible de résoudre ce problème ou de contourner le problème? Je veux éviter de traverser toute la chose et de les mettre à @"" .

Merci pour toute aide!

~ Carpetfizz

Il n'y a rien je suppose, bien qu'il puisse être facilement corrigé des fabricants d'api, si ce n'est pas possible, vous pouvez toujours mettre une macro simple, j'utilise pour éviter une telle chose, suivez la macro ci-dessous

 #define Is_Empty(value) (value == (id)[NSNull null] || value == nil || ([value isKindOfClass:[NSSsortingng class]] && ([value isEqualToSsortingng:@""] || [value isEqualToSsortingng:@"<null>"]))) ? YES : NO #define IfNULL(original, replacement) IsNULL(original) ? replacement : original #define IsNULL(original) original == (id)[NSNull null] #define SafeSsortingng(value) IfNULL(value, @"") 

Usage

 self.label.text=SafeSsortingng([dic objectForKey:@"name"]); 

Vous avez tort. Les valeurs nulles dans JSON ne sont pas stockées en tant que valeurs de string <null>. Ils sont stockés en tant qu'objects NSNull, que NSLog enregistre sous la forme <null>.

Vous ne pouvez jamais faire confiance aux données qui vous ont été données. Si vous supposez que vous avez un NSSsortingng et que le server vous envoie un nombre, votre code risque de tomber en panne.

 NSSsortingng* myJSONSsortingng = ...; if ([myJSONSsortingng isKindOfClass:[NSSsortingng class]]) { it is a ssortingng } else { it is not a ssortingng }