2010-11-09 1 views
0

Я десериализую некоторые JSON, используя фреймворк TouchJSON. Массив словарей, который исходит от разбора, используется для заполнения UITableView.Работа с <'null> 'значениями в TouchJSON

Существует вероятность того, что некоторые значения в анализе JSON I пусты. В результате, если я NSLog его на консоль, в значениях, глядя, как это:

id = 1234; 
title = "Hello, World"; 
description = "<null>"; 
detail = "The world says hello"; 

Здесь описание значение было пустая строка, извлекаемые с сервера.

Так TouchJSON признает, что значения описание имеет тип строки, но первоначальное намерение сервера было сообщить, что это была пустая строка, как description = @"";

Если я позже попытаться установить значение описания , до текстового свойства UILabels, приложение будет аварийно завершено.

Итак, мои вопросы: у меня есть как NSNumbers, так и NSStrings в JSON, должен ли я пройти результат от десериализации метода TouchJSON и проверить все значения и как это сделать?

Я не могу имитировать, что произойдет, если значение NSNumber было пустым, как бы я мог проверить это? Будет ли значение NSNumber равным нулю в этом случае вместо «null»?

ответ

2

Я использовал библиотеку SBJSON и столкнулся с той же проблемой. Мое решение применимо и к вашему делу: я изменил библиотеку так, чтобы это обработал отсутствующие значения, установив их в +[NSNull null] в возвращаемой коллекции. Это делает ваш код клиента немного бодрящим, потому что вы должны обрабатывать случаи, когда вы можете получить NSNull вместо NSString. Но это всего лишь более очевидная версия бородавки, где вам нужно решить, означает ли @"" пустую строку или неустановленное значение.

+0

Привет, Грэм, спасибо за предложение. Я не собирался переписывать часть сканера TouchJSON, поэтому вместо этого я зацикливаю возвращаемые данные и заменяю пустые строки на @ "", а пустые числа на 0. Я получаю это, потому что я имею дело только со строками и числами и мои данные попадают непосредственно в представления, которые отлично сочетаются с @ "". – RickiG

+1

Грэм, какой файл у меня изменился? – Krishnan