0

在互联网上搜索了一段时间后,我向您寻求快速帮助。我正在开发一个使用一些 JSon 数据的 iOS 5 应用程序(针对 iPhone)。一切正常,直到服务器端的人决定在 JSON 消息中实现以 base64String 转换的图像。现在,发生了什么事:我能够下载所有的 JSon 消息(下面有一个示例),如果我保留 JSon 字符串并用 JSONlint 解析它,它说消息是好的,所以我很确定消息不是格式错误,但是当我尝试用NSJSONSerialization类在 JSon 中解析它时,它给了我一个我从未遇到过的错误。

这是我收到的 JSON 消息:

{"AuthenticationId":"6e5d3c5c-ce37-49b9-8331-047565181e91", "PropertyBag":[{"Key":"auth_id","Value":"6e5d3c5c-ce37-49b9-8331-047565181e91"},{" Key":"UserInfo","Value":"{\"FirstName\":\"thisIsTheFirstName\",\"LastName\":\"thisIsTheLastName\",\"E_Mail\":null,\"Region\" :4,\"StoreDescription\":\"thisIsAStore\",\"SerializeImage\":\"傉䝎਍ਚ\ u0000ഀ䡉刭\u0000㈀\u0000㈀㈀؈\ u0000ḁ蠿±\ u0000猁䝒b캮\ \ u0000猁䝒䅧䅍\ u0000辱辱ա\ u0000ऀ䡰獙\ u0000쌎\ u0000쌎윁ꡯd؀桔摆嵙홈ᡗ㫯䔔唠婎馶䆹బ⍳昚ᮙ嶵嶵嶬暔숍荁떢镶ഛ䗚ێۍ䋭䨚㑞甒丷쎇绦쟠繬컫뿾﯃츜\uffff꾞\udf57鍁칱凤鹳楠횄枰麄ဪ纽纽輌岍擹䨹ဠ啔쥙㊲\ud832鲦阜鹋꿗ﵧ﷽쓄쬄佌쿬䟛ꫴ猽罴㦯婽⌾螕넎  udd6fcf㦳cf㦳ノ㑎ґ⍳碎丧侨㑎뇱⍉⍵㎘ꐀࠉỸỸࢤ폸ỡỸɔ┲앒풌ỡɹ┰앐성닰밅ᙲ뎰섐뇱성຾밨럱럱럱럱성성성성성성성성성백蓘庐蓘庐祹㿼逓ჴ␐ჴ␐쀫殗⟕䙏ࠏࠏॽ煱䉡ꚧ粦橼⳰䮨银䮨银҄︾厣㢧단ꋠ䋂䋂맡탤맡탤ᔘᨚᳯᔘᨚᳯါی⌣븣藄藄ꂗꂗ곬곬ꂗꂗꂗꂗ곬ꂗ汤殌浭짠쫉팊? 뵐伅誸䄰귣ꯋ땗萡㭻틪惩翎㲞珡എ懒짉빉顁隩혨帱쌁逪᠕☯坃ሒ댓䂮ꫨ噇댱처噇돠ಘ沉文斱처4趼碕婝᝟⸗⏛뮧祈祷聿↲ꃸ紭兑ꃢ䗝费䥺﯅껪왝샊☆⁢靧焮健\ud943圞乌嚃ꗁc襑핂견ⰼ\udaba9d뗳凲丞\ udffb룞뻁皱ᖍ\ udcef昙﫽ꇰㅎ㶝啂견띜抪\ udf1c䁔黩ꔞⲃ뢾앲谙ဓ䓀悘湓⥈췍췍쾫⵹躵ԇ믂 줁軵䛤鲢餷ﲨǀ넳䡴鲢餷ﲨǀ목考ញ㥮饮鰰뉔ﶨ쌥᪢袮ud抠友ꥆ꺘ᓞ뛖骝斐觉䈈阃ᐨ덨\ude4c췦វꀊꀊc⤑槫⼩c 傁腕腕过Ⱶ䛊鋹쬞䈆铯ﶕ䁯鲐싥凜绫◄假퇘러뒬뒶蔯厉ᆰ췌뒰뒶蔯厉ᆰ췰듓뮲巜뭽ኲ... 덠통歳૗阝辽ᗈ趍㧆ዥ\ude1fᇑ嵝䏀៵頮䐷갯伨⭭떧䅄匜折̋ﲹ秐긬읻㦍閅됵ダ읻㦍閅됵ダ〰萉뛡丛䓕2鹃䞗⃡丛䓕2鹃䞗⃉▅Ί〼*⤅⮱劽⢄风⛤璸ȆӁ舆论슚슚쪡䭊ዹ㷮⺚਑볉匘卛季훿儜鑙狂☇뢨굨씼鷰꽬౔㺜ф鸋峡谷ᵝჷׂ趿૞檇畕啎쁕Ꞌ궭徍׍李痻㉸爒ࣶ蔉璢斖਻㶒쫡̋舌㮠钌آፂ簠❴됥⍜䟰䝇쇹셾Ꞌ寮䝇쇹爛寰θ獐矦뢎ꏫ匐荡䊰芈濷붶ᗉ呙뢀ᙎ빋ÿ䠦죥ᤸ嵚\u0000\u0000䕉䑎䊮艠\"}"}]}`

可可抛出的错误是:

Error Domain=NSCocoaErrorDomain Code=3840“操作无法完成。(Cocoa 错误 3840。)”(无法将十六进制转义序列(无高位字符)转换为 UTF8 编码字符。) UserInfo=0x688cfd0 {NSDebugDescription=Unable to将十六进制转义序列(无高位字符)转换为 UTF8 编码字符。}

4

1 回答 1

2

找到了解决方案:)。问题不在于血腥NSJSonSerialization班级,而在于服务器端的家伙推出的编码图像。他们声称是 Base64String,但它是一个普通字符串...... AAAARGH!
发现了问题,用正确的转换改变了图像,现在它就像一个魅力!

于 2012-09-26T09:07:40.660 回答