2010-03-15 8 views
2

Я использую структуру JSON от http://code.google.com/p/json-framework. JSON ниже терпит неудачу с этой ошибкой:Почему этот JSON терпит неудачу только в iPhone?

-JSONValue failed. Error trace is: (
Error Domain=org.brautaset.JSON.ErrorDomain Code=5 UserInfo=0x124a20 "Unescaped control character '0xd'", 
Error Domain=org.brautaset.JSON.ErrorDomain Code=3 UserInfo=0x11bc20 "Object value expected for key: Phone", 
Error Domain=org.brautaset.JSON.ErrorDomain Code=3 UserInfo=0x1ac6e0 "Expected value while parsing array" 

)

JSON разбираемый:

[ 
    { 
    "id" :"2422", 
    "name" :"BusinessA", 
    "address" :"7100 U.S. 50", 
    "lat" :"38.342945", 
    "lng" :"-90.390701", 
    "CityId" :"11", 
    "StateId" :"38", 
    "CategoryId" :"1", 
    "Phone" :"(200) 200-2000", 
    "zip" :"00010" 
    } 
] 

Я думаю, что 0xD представляет собой каретку. Когда я помещаю вышеуказанный JSON в TextWrangler, я не вижу возврата каретки. Я получил JSON, выполнив «po myjson» в отладчике. Он передает этот валидатор: http://json.parser.online.fr/. Кто-нибудь может понять, в чем проблема?

+0

Что говорит 'od -c' о выходе? –

+0

Что такое od -c? – 4thSpace

+0

ну что-то общего со значением для ключа «Телефон» ... – stefanB

ответ

1

Возможно, вы получаете плохие данные от веб-службы или в неожиданной кодировке. Используя po myjson (или NSLog()), а затем копирование будет опускать любые непечатаемые символы, поэтому даже если у вас есть случайный 0xd, веб-валидатор не увидит его.

Вы должны попробовать что-то вроде [myjson rangeOfString:@"\15"], чтобы проверить наличие 0xd (восьмеричный 15 эквивалентен шестнадцатеричному 0xd).

Смежные вопросы