2012-12-17 33 views
21

Tôi nghĩ rằng tôi nhận được nó như thế nào để sử dụng NSJSONSerialization trên tất cả. Cuộc gọi tôi đang làm là:Làm cách nào để bao gồm giá trị null trong JSON qua NSJSONSerialization?

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

nơi thông số là một NSDictionary trong đó bao gồm khóa và giá trị sử dụng trong yêu cầu JSON. Mọi thứ đều ổn và tất cả, cho đến khi tôi phải sử dụng null làm giá trị thay vì một chuỗi rỗng. Tôi không thể tìm cách đặt giá trị là null. Các ví dụ về json mà tôi cần phải tạo ra là:

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

Cách máy chủ được thiết lập là nó mong đợi hoặc là một lỗi như là một chuỗi hoặc một rỗng nếu không có lỗi.

Bất kỳ ý tưởng nào? Tôi có thiếu một cuộc gọi API hoặc một cái gì đó như thế?

Cảm ơn!

Trả lời

51

Bạn phải sử dụng NSNull. Ví dụ

Swift

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

Objective-C

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

Từ các tài liệu chính thức của NSDictionary:

Cả một chìa khóa cũng không phải là giá trị có thể bằng không ; nếu bạn cần đại diện cho một giá trị null trong một từ điển, bạn nên sử dụng NSNull.

-3

Chỉ cần cố gắng một cái gì đó như thế này:

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

và dùng biểu tượng này như là tham số mà bạn muốn nó.

+0

[NSNull null], không phải NULL. – gnasher729

+0

bạn không thể chèn giá trị nil vào NSDictionary – Climbatize

0

Nếu bạn đang sử dụng JSON Swifty, tôi vừa tạo a PR cần xử lý nil. Nó chưa được hợp nhất và có thể cần một số cải tiến. part mô tả cách thực hiện điều đó sẽ là một khởi đầu tốt để viết triển khai của riêng bạn nếu bạn cần. Logic không phải là phức tạp nhưng có thể có những trường hợp cạnh khó khăn/những điều hiệu suất cần suy nghĩ.

Tôi biết đó không phải là câu trả lời trực tiếp cho câu hỏi vì nó thay thế NSJSONSerialization, nhưng tôi hy vọng nó có thể giúp một số người thất vọng bởi cách Swift xử lý nil/json!

Các vấn đề liên quan