NSJSONSerialization
Вы используете NSJSONSerialization
класс, чтобы преобразовать JSON в объекты Основы и преобразовать объекты Основы в JSON.
Объект, который может быть преобразован в JSON, должен иметь следующие свойства:
Объект верхнего уровня
NSArray
илиNSDictionary
.Все объекты являются экземплярами
NSString
,NSNumber
,NSArray
,NSDictionary
, илиNSNull
.Все ключи словаря являются экземплярами
NSString
.Числами не является NaN или бесконечность.
Другие правила могут применяться. Вызов isValidJSONObject:
или попытка преобразования является категорическими способами сказать, может ли данный объект быть преобразован в данные JSON.
Оператор импорта
Swift
import Foundation
Objective C
@import Foundation;
Доступность
Доступный в OS X v10.7 и позже.
-
Возвращает объект Основы из данных данных JSON.
Объявление
Swift
class func JSONObjectWithData(_
data
: NSData, optionsopt
: NSJSONReadingOptions, errorerror
: NSErrorPointer) -> AnyObject?Objective C
+ (id)JSONObjectWithData:(NSData *)
data
options:(NSJSONReadingOptions)opt
error:(NSError **)error
Параметры
data
Объект данных, содержащий данные JSON.
opt
Опции для чтения данных JSON и создания объектов Основы.
Для возможных значений посмотрите NSJSONReadingOptions.
error
Если ошибка происходит, по возврату содержит
NSError
объект, описывающий проблему.Возвращаемое значение
Объект Основы от данных JSON в
data
, илиnil
если происходит ошибка.Обсуждение
Данные должны быть в одних из 5 поддерживаемых кодировок, перечисленных в спецификации JSON: UTF-8, UTF-16LE, UTF-16BE, UTF-32LE, UTF-32BE. Данные могут или могут не иметь BOM. Самое эффективное кодирование для использования для парсинга является UTF-8, поэтому если у Вас есть выбор в кодировании данных, переданных этому методу, используйте UTF-8.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
Возвращает объект Основы из данных JSON в данном потоке.
Объявление
Swift
class func JSONObjectWithStream(_
stream
: NSInputStream, optionsopt
: NSJSONReadingOptions, errorerror
: NSErrorPointer) -> AnyObject?Objective C
+ (id)JSONObjectWithStream:(NSInputStream *)
stream
options:(NSJSONReadingOptions)opt
error:(NSError **)error
Параметры
stream
Поток, из которого можно считать данные JSON.
Поток должен быть открыт и сконфигурирован.
opt
Опции для чтения данных JSON и создания объектов Основы.
Для возможных значений посмотрите NSJSONReadingOptions.
error
Если ошибка происходит, по возврату содержит
NSError
объект, описывающий проблему.Возвращаемое значение
Объект Основы от данных JSON в
stream
.Обсуждение
Данные в потоке должны быть в одних из 5 поддерживаемых кодировок, перечисленных в спецификации JSON: UTF-8, UTF-16LE, UTF-16BE, UTF-32LE, UTF-32BE. Данные могут или могут не иметь BOM. Самое эффективное кодирование для использования для парсинга является UTF-8, поэтому если у Вас есть выбор в кодировании данных, переданных этому методу, используйте UTF-8.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
Возвраты данные JSON от объекта Основы.
Объявление
Swift
class func dataWithJSONObject(_
obj
: AnyObject, optionsopt
: NSJSONWritingOptions, errorerror
: NSErrorPointer) -> NSData?Objective C
+ (NSData *)dataWithJSONObject:(id)
obj
options:(NSJSONWritingOptions)opt
error:(NSError **)error
Параметры
obj
Объект, от которого можно генерировать данные JSON. Не должен быть
nil
.opt
Опции для создания данных JSON.
Посмотрите NSJSONWritingOptions для возможных значений. Передача
0
не указать опции.error
Если внутренняя ошибка происходит, по возврату содержит
NSError
объект, описывающий проблему.Возвращаемое значение
Данные JSON для
obj
, илиnil
если происходит внутренняя ошибка. Получающиеся данные являются закодированным в UTF-8.Обсуждение
Если
obj
не произведет допустимый JSON, исключение выдается. Это исключение выдается до парсинга и представляет программную ошибку, не внутреннюю ошибку. Необходимо проверить, произведет ли ввод допустимый JSON прежде, чем вызвать этот метод при помощиisValidJSONObject:
.Установка
NSJSONWritingPrettyPrinted
опция генерирует JSON с пробелом, разработанным для создания вывода более читаемым. Если та опция не будет установлена, то самый компактный JSON будет сгенерирован.Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
Пишет данный объект JSON в поток.
Объявление
Swift
class func writeJSONObject(_
obj
: AnyObject, toStreamstream
: NSOutputStream, optionsopt
: NSJSONWritingOptions, errorerror
: NSErrorPointer) -> IntObjective C
+ (NSInteger)writeJSONObject:(id)
obj
toStream:(NSOutputStream *)stream
options:(NSJSONWritingOptions)opt
error:(NSError **)error
Параметры
obj
Объект записать в
stream
.stream
Поток, в который можно записать.
Поток должен быть открыт и сконфигурирован.
opt
Опции для записи данных JSON.
Посмотрите NSJSONWritingOptions для возможных значений. Передача
0
не указать опции.error
Если ошибка происходит, по возврату содержит
NSError
объект, описывающий проблему.Возвращаемое значение
Число байтов, записанных в поток, или
0
если происходит ошибка.Обсуждение
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
Возвращает булево значение, указывающее, может ли данный объект быть преобразован в данные JSON.
Объявление
Swift
class func isValidJSONObject(_
obj
: AnyObject) -> BoolObjective C
+ (BOOL)isValidJSONObject:(id)
obj
Параметры
obj
Объект протестировать.
Возвращаемое значение
YES
true
еслиobj
может быть преобразован в данные JSON, иначеNO
false
.Обсуждение
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
Опции, используемые при создании объектов Основы из данных JSON — видят
JSONObjectWithData:options:error:
иJSONObjectWithStream:options:error:
.Объявление
Swift
struct NSJSONReadingOptions : RawOptionSetType { init(_
rawValue
: UInt) init(rawValuerawValue
: UInt) static var MutableContainers: NSJSONReadingOptions { get } static var MutableLeaves: NSJSONReadingOptions { get } static var AllowFragments: NSJSONReadingOptions { get } }Objective C
enum { NSJSONReadingMutableContainers = (1UL << 0), NSJSONReadingMutableLeaves = (1UL << 1), NSJSONReadingAllowFragments = (1UL << 2) }; typedef NSUInteger NSJSONReadingOptions;
Константы
-
MutableContainers
NSJSONReadingMutableContainers
Указывает, что массивы и словари создаются как непостоянные объекты.
Доступный в OS X v10.7 и позже.
-
MutableLeaves
NSJSONReadingMutableLeaves
Указывает, что листовые строки в графе объектов JSON создаются как экземпляры
NSMutableString
.Доступный в OS X v10.7 и позже.
-
AllowFragments
NSJSONReadingAllowFragments
Указывает, что синтаксический анализатор должен позволить объекты верхнего уровня, которые не являются экземпляром
NSArray
илиNSDictionary
.Доступный в OS X v10.7 и позже.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-
-
Опции для записи данных JSON.
Объявление
Swift
struct NSJSONWritingOptions : RawOptionSetType { init(_
rawValue
: UInt) init(rawValuerawValue
: UInt) static var PrettyPrinted: NSJSONWritingOptions { get } }Objective C
enum { NSJSONWritingPrettyPrinted = (1UL << 0) }; typedef NSUInteger NSJSONWritingOptions;
Константы
-
PrettyPrinted
NSJSONWritingPrettyPrinted
Указывает, что данные JSON должны быть сгенерированы с пробелом, разработанным для создания вывода более читаемым. Если эта опция не установлена, самое компактное представление JSON сгенерировано.
Доступный в OS X v10.7 и позже.
Оператор импорта
Objective C
@import Foundation;
Swift
import Foundation
Доступность
Доступный в OS X v10.7 и позже.
-