2012-12-17 10 views
21

Myślę, że rozumiem, jak korzystać z NSJSONSerialization na wszystkich. Wezwanie Robię to:Jak uwzględnić wartość null w JSON przez NSJSONSerialization?

[NSJSONSerialization dataWithJSONObject:parameters options:0 error:&error] 

gdzie parametry jest NSDictionary która zawiera klucze i wartości do wykorzystania w żądaniu JSON. Wszystko jest w porządku i wszystko, dopóki nie będę używał null jako wartości zamiast pustego łańcucha. Nie mogę znaleźć sposobu, aby ustawić wartość jako null w ogóle. Przykładem json że muszę stworzyć to:

{"target" 
    {"firstname":<firstname>, 
    "lastname":<lastname>}, 
"error":null 
} 

Sposób konfiguracji serwera jest to, że spodziewa albo błąd jako ciąg lub NULL jeśli nie ma błędu.

Wszelkie pomysły? Czy brakuje mi połączenia API lub czegoś podobnego?

Dzięki!

Odpowiedz

51

Musisz użyć NSNull. Na przykład

Swift

let dict = ["firstKeyHasValue": 2342, "secondKeyHasNoValue": NSNull()] 

Objective-C

NSDictionary *dict = @{ @"error": [NSNull null] }; 

Z oficjalnej dokumentacji NSDictionary:

Ani klucz ani wartość może być zerowa ; jeśli potrzebujesz reprezentować wartość pustą w słowniku, powinieneś użyć NSNull.

-3

Tylko spróbuj coś takiego:

NSDictionary *jsonObj = [NSDictionary dictionaryWithObjectsAndKeys:@"My Name", @"name", @"Developer", @"occupation", NULL, @"My NULL field", nil]; 

i użyć tego obiektu jako parametr gdzie chcesz.

+0

[NSNull null], nie NULL. – gnasher729

+0

Nie można wstawić zerowych wartości w NSDictionary – Climbatize

0

Jeśli używasz Swifty JSON, właśnie stworzyłem a PR, który powinien obsługiwać zero. Nie jest jeszcze scalony i może wymagać pewnych ulepszeń. The part, który opisuje, jak to zrobić, powinien być dobrym początkiem do napisania własnej implementacji, jeśli zajdzie taka potrzeba. Logika nie jest tak skomplikowana, ale mogą istnieć trudne do pomyślenia przypadki/wydajności.

Wiem, że nie jest to bezpośrednia odpowiedź na to pytanie, ponieważ zastępuje ona NSJSONSerialization, ale mam nadzieję, że może pomóc niektórym ludziom w sferze frustracji związanej z tym, jak Swift obsługuje zero/json!

Powiązane problemy