2012-01-13 24 views
42

Có thể nếu tôi có NSString và tôi muốn sử dụng NSJSONSerialization không? Làm thế nào để tôi làm điều này?NSJSONSerialization từ NSString

+1

Trong trường hợp hiệu suất là ưu tiên của bạn, JSONKit là một lựa chọn tốt hơn. – Danra

+1

Có một hướng dẫn tốt tại http://www.raywenderlich.com/5492/working-with-json-in-ios-5 liên quan đến việc sử dụng NSJSONSerialization. – dean

Trả lời

88

Trước tiên, bạn sẽ cần phải chuyển đổi NSString của bạn để NSData bằng cách làm như sau

NSData *data = [stringData dataUsingEncoding:NSUTF8StringEncoding]; 

sau đó chỉ cần sử dụng phương pháp JSONObjectWithData để chuyển nó sang JSON

id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; 
+3

để thuận tiện, bạn có thể đặt mã này vào Danh mục NSJSONSerialization. – jianpx

+0

Sử dụng 'NSJSONSerialization JSONObjectWithData' cẩn thận, vì, mặc dù nó có tham số NSError *, nó có thể ném một ngoại lệ khi có lỗi xảy ra! Chúng tôi khuyên bạn nên kèm theo nó bằng khối '@try {} @catch (...)'. – LaborEtArs

1

Bạn có thể chuyển đổi chuỗi của bạn để NSData bằng cách nói:

NSData *data = [string dataUsingEncoding:NSUTF8StringEncoding]; 

Sau đó, bạn có thể sử dụng nó với NSJSONSerialization. Tuy nhiên, lưu ý rằng NSJSONSerialization chỉ dành cho iOS5, vì vậy bạn có thể sử dụng thư viện như TouchJSON hoặc JSONKit tốt hơn, cả hai đều cho phép bạn làm việc trực tiếp với chuỗi, giúp bạn tiết kiệm bước chuyển đổi thành NSData.

12

Bạn cần chuyển đổi NSString thành NSData, tại thời điểm đó, bạn có thể sử dụng phương thức +[NSJSONSerialization JSONObjectWithData:options:error:].

NSString * jsonString = YOUR_STRING; 
NSData * data = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; 
NSError * error = nil; 
id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error]; 
if (!json) { 
    // handle error 
} 
0

tôi đã viết một blog bài đó chứng tỏ làm thế nào để bọc lớp JSON gốc iOS trong một giao thức chung cùng với việc triển khai thực hiện sử dụng native Lớp JSON trên iOS.

Cách tiếp cận này giúp việc sử dụng chức năng gốc dễ dàng hơn nhiều và giảm số lượng mã bạn phải viết. Hơn nữa, nó làm cho nó dễ dàng hơn rất nhiều để chuyển đổi việc thực hiện bản địa với, nói, JSONKit, nếu người bản xứ sẽ chứng minh là không đủ.

http://danielsaidi.com/blog/2012/07/04/json-in-ios

Bài đăng blog chứa tất cả mã bạn cần. Chỉ cần sao chép/dán :)

Hy vọng điều đó sẽ hữu ích!

+0

Cảm ơn! Đã sửa nó! –

+0

Xin lưu ý rằng bài đăng là 5 tuổi :) –

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