NSJSONSerialization не обрабатывает отрицательные целые числа
Я пытаюсь проанализировать файл JSON в NSArray, и все это хорошо работает для положительных чисел. Однако все отрицательные целые числа в этом файле JSON приводят к большим числам, например "[11] __NSCFNumber * (long)72057594037927933". Как я могу заставить это работать?
Вот мой файл JSON:
[0,1,2,3,4,5,6,7,8,9,10,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11]
а вот код:
NSError* error;
NSData* data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"https://some/json/file.json"]];
NSMutableArray* array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];
1 ответ
Решение
XCode не всегда печатает хорошие значения в область Отладки XCode (где появляются живые значения для контекста).
Я поместил ваш код в свой собственный проект, и когда я перебираю каждую строку, я вижу "eachNumber __NSCFNumber * (long)72057594037927934 {0xbfffffffffffffe3}
биты, но если я попытаюсь распечатать значения массива в консоли, вы увидите правильный "-2
"результат.
Попробуй сам. Я добавил в эти строки сразу после вашей:
NSMutableArray* array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];
NSLog(@"array is %@", array);
for(id eachNumber in array)
{
NSLog(@"eachNumber is %@", eachNumber);
}