У меня есть приложение iOS, которое должно обрабатывать ответ от веб-службы. Ответ представляет собой сериализованную строку JSON, содержащую сериализованный объект JSON, выглядящий примерно так:
"{ \"name\" : \"Bob\", \"age\" : 21 }"
Обратите внимание, что этот ответ представляет собой строку JSON, а не объект JSON. Мне нужно сделать десериализацию строки, чтобы получить следующее:
{ "name" : "Bob", "age" : 21 }
И затем я могу использовать +[NSJSONSerialization JSONObjectWithData:options:error:]
для десериализации этого в NSDictionary
.
Но как мне сделать этот первый шаг? То есть, как я "unescape" строку, так что у меня есть сериализованный объект JSON? +[NSJSONSerialization JSONObjectWithData:options:error:]
работает только в том случае, если объект верхнего уровня является массивом или словарем; он не работает с строками.
В итоге я написал мой собственный синтаксический анализатор JSON, который, я надеюсь, соответствует раздела 2.5 RFC 4627. Но я подозреваю, что упустил какой-то простой способ сделать это с помощью NSJSONSerialization
или другого доступного метода.