Tôi có một ứng dụng iOS cần xử lý phản hồi từ dịch vụ web. Câu trả lời là một chuỗi JSON serialized chứa một đối tượng JSON serialized, tìm một cái gì đó như thế này:Làm thế nào bạn có thể deserialize một chuỗi JSON thoát với NSJSONSerialization?
"{ \"name\" : \"Bob\", \"age\" : 21 }"
Lưu ý rằng phản ứng này là một JSON chuỗi, không phải là một đối tượng JSON. Những gì tôi cần làm là deserialize chuỗi, vì vậy mà tôi có được điều này:
{ "name" : "Bob", "age" : 21 }
Và sau đó tôi có thể sử dụng +[NSJSONSerialization JSONObjectWithData:options:error:]
để deserialize đó vào một NSDictionary
.
Nhưng, làm cách nào để thực hiện bước đầu tiên đó? Đó là, làm thế nào để tôi "unescape" chuỗi để tôi có một đối tượng JSON serialized? +[NSJSONSerialization JSONObjectWithData:options:error:]
chỉ hoạt động nếu đối tượng cấp cao nhất là mảng hoặc từ điển; nó không hoạt động trên dây.
Tôi đã kết thúc bằng văn bản my own JSON string parser, mà tôi hy vọng phù hợp với section 2.5 of RFC 4627. Nhưng tôi nghi ngờ tôi đã bỏ qua một số cách dễ dàng để làm điều này bằng cách sử dụng NSJSONSerialization
hoặc một số phương pháp có sẵn khác.
Chỉ cần cắt đứt hàng đầu và đuôi quoteß và sau đó thay thế tất cả '\" 's với '" '. –
Sau đó, bạn lặp lại quá trình unescaping cho mỗi trình tự thoát có thể có (có rất nhiều finitely). –
Chuỗi thoát '\ uXXXX' làm cho việc tìm kiếm và thay thế trở nên khó khăn. –