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
Trả lời
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];
để thuận tiện, bạn có thể đặt mã này vào Danh mục NSJSONSerialization. – jianpx
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
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.
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
}
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!
Cảm ơn! Đã sửa nó! –
Xin lưu ý rằng bài đăng là 5 tuổi :) –
- 1. Kết quả NSJSONSerialization trong EXC_BAD_ACCESS
- 2. NSJSONSerialization deserialize numbers là NSDecimalNumber?
- 3. NSJSONSerialization trở về con số không
- 4. nsjsonserialization trong ios5?
- 5. NSDate từ NSString
- 6. NSString từ Unicode
- 7. Nhận NSString Từ NSURL
- 8. remove "\ n" từ NSString
- 9. NSJSONSerialization không có tùy chọn
- 10. NSJSONSerialization và Unicode, sẽ không phát độc đáo cùng nhau
- 11. Lấy từ cuối cùng của số NSString
- 12. Trả lại một NSString từ NSError
- 13. Xóa các từ khỏi một số NSString
- 14. Gỡ lỗi EXC_BAD_ACCESS từ số NSString
- 15. làm thế nào để loại bỏ ký tự từ NSString sau NSString cụ
- 16. Cách thêm NSString vào NSString khác
- 17. prepend NSString?
- 18. NSJSONSerialization - Không thể chuyển đổi dữ liệu thành chuỗi
- 19. đối tượng được trả về từ NSJSONSerialization có thể thay đổi
- 20. JSON hợp lệ, nhưng 'Lỗi ca cao 3840' từ AFNetworking/NSJSONSerialization
- 21. Phân tích cú pháp json với lớp NSJSONSerialization bằng cách sử dụng objectForKey trong iOS
- 22. Sử dụng NSJSONSerialization để phân tích cú pháp JSON
- 23. lỗi chọn không được nhận dạng với NSJSONSerialization + AFNetworking
- 24. NSString stringWithFormat
- 25. NSString trống
- 26. NSClassFromString() vs classNamed: (NSString *)
- 27. Các ký tự điều khiển không thoát trong NSJSONSerialization
- 28. NSJSONSerialization không tạo container có thể thay đổi
- 29. Phương pháp lớp và an toàn chủ đề (NSJSONSerialization)
- 30. Gọi phương thức trên mọi từ trong NSString
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
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