2014-12-01 4 views
2

преобразовать NSDictionary в JSON NSData с помощью следующей строки:Другие варианты, чем NSJSONWritingPrettyPrinted?

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:answers 
                options:NSJSONWritingPrettyPrinted 
                error:&err]; 

И передать его стороне сервера, который является PHP скрипт. Скрипт считывает строку JSON, как:

{ 
    "A" : "1941", 
    "D" : "1699", 
    "B" : "1949", 
    "E" : "1823", 
    "C" : "1999" 
} 

Как я могу отформатировать строку JSON в 1 строку, так же, как показано ниже?

{"A" : "1941", "D" : "1699", "B" : "1949", "E" : "1823", "C" : "1999"} 

Есть ли какой-либо другой вариант, кроме NSJSONWritingPrettyPrinted?

+0

Только не указать эту опцию. 'options:' может быть нулевым. –

ответ

8

Цена the documentation for NSJSONWritingPrettyPrinted;

Если этот параметр не установлен, генерируется максимально компактное представление JSON.

Если вы не хотите устанавливать какие-либо биты в маске параметров записи, просто пропустите ноль для этого параметра. (Или в Swift - пустой набор параметров, который выглядит как пустой массив: [].)

+1

Или еще лучше, 'kNilOptions', более семантический, чем 0. –

4

Вы не должны использовать NSJSONWritingPrettyPrinted для целей, отличных от отладки. Вы можете пройти в options:0 (см. Ниже), чтобы иметь уменьшенный JSON.

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:answers options:0 error:&err]; 

Чтобы проверить это, вы можете преобразовать его в строку и NSLog его.

NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 

Там нет других, чем NSJSONWritingPrettyPrinted других вариантов:

typedef NS_OPTIONS(NSUInteger, NSJSONWritingOptions) { 
    NSJSONWritingPrettyPrinted = (1UL << 0) 
} NS_ENUM_AVAILABLE(10_7, 5_0); 
Смежные вопросы