0

インターネットでしばらく検索した後、簡単なヘルプを参照してください。JSON データを使用する iOS 5 アプリケーション (iPhone 向け) を開発しています。サーバー側の担当者が、base64String に変換されたイメージを JSON メッセージに実装することを決定するまで、すべてがうまくいきました。さて、何が起こるか: すべての JSon メッセージをダウンロードできます (以下にサンプルがあります)。JSon 文字列を保持して JSONlint で解析すると、メッセージは OK であると表示されるので、メッセージが正しくないことは確かです不正な形式ですが、クラスを使用してJSonで解析しようとすると、NSJSONSerialization直面したことのないエラーが発生します。

受信した JSON メッセージは次のとおりです。

{"AuthenticationId":"6e5d3c5c-ce37-49b9-8331-047565181e91", "PropertyBag":[{"キー":"auth_id","値":"6e5d3c5c-ce37-49b9-8331-047565181e91"},{" Key":"UserInfo","Value":"{\"FirstName\":\"thisIsTheFirstName\",\"LastName\":\"thisIsTheLastName\",\"E_Mail\":null,\"Region\" :4,\"StoreDescription\":\"thisIsAStore\",\"SerializeImage\":\"傉䝎\ U0000嵙홈ᡗ㫯摆䔔喋婎馶䆹బ⍳昚ᮙ嶵雕嶬暔숍荁떢镶ഛ䗚ێۍ䋭䨚㑞甒丷䎇縚쟠繬컫뿾컫뿾컫뿾﯃잃엞5\uffff까5鹳칱鳳柟횄枰麄ဪ紐車岍擹䨹ဠ啔쥙㊲\ud832鲦府鶓꿗ﵧ﷽쓄쬄佌쿧䟛ꫴ猽羆㦯婽ﰔ螕乬ﰔ螕琉붕箾⬷⤭⥡覉⬷⤭⥡鳐쿬鳐풟珗珗楩楩ឋឋؑ楤襩⚥⚥넥ௌ ௌ ௌଋଋ⴬⴬䔥筼䔥筼udd6f߳߳丧腨丧腨҄҄\ udbcf蓘廬祹㿼逓ⴤ␐쀫ⴤ␐쀫쀫袘黧殗殗ࠏ䙏ࠏ煱䉡ꚧꚧ粦櫞⳰䮨银҄︾鲏鲏단ꋠ䋂짠쫉팊럳럳蟟螇蟟螇ἱ־귩ﯽ ﯽꂁ㮂㨺炸萨౤౤篆䭋쾋됫ᒫ쏆ᒫ쏆ꔰ菵旗 뵐伅誸䄰귣ꯋ땗萡応答㭻틪懲翎㲞珡എ懶짉빉顁隩혨幬쌁逪᠕☯坃ሽ댓䂮ꫨ噇撱惇4㲘惇4\趼碕婝᝟⸗⏛뮧祈り聿↲ꃸ紭兑ꃢ䗝費䥺﯅껪왝샊☆⁢靧焮健\ udffb 줁軵䡴鰱餷ﲨǀ斟ញ㥥郉閏뉔ﶨ쌥᪩袮摳evꥆ꺘ꄷ䛤ᐓ묌滯ᓞ뛖骝斐볙䈈阃睁덨\ude4c췦ឨផផ友Ⅷc 6 ȷⱁ蚻디ꪹ䌓㥙ꪹꪹ晙卓晙卓톓诐젖진覤䂌ၨၨㄖ⠥⠥䀦ḉ砾㾐綶綶烠⼨䖷䬌䔎傁빢基地ⱟ㕵䛊鋈쬞䈆陯ﶕ䁯鮐쐄⥔礻◄假퇬迥䯼阧ᆰ췰꒶蔯흌뀓厲뮲巜벼뭽ኲ…⪪阙ṡ굃겵깂潮덠통歳૗阝辽ᗈ趍㧆ዥ\ude1fᇑ嵝䏀៵頮䐷갯伨⭭떧䅄匜抉̋ﲹ秐긬읻㦎閅됵da〰萠뛡䓕鹐䃀⃀⃀▅Ί〼*⤅⮱劽⢄風⛤ꗎ璸ȆӁ舆ꋑ슚幌쪡䭊ዹ㷮⺚਑볉匘卛季훿儜鑙屢☇뢨ꡨ씼龎잭잭寬䞸屬暸鸋鸋暸ᵝჷ峽ׂᵝჷׂׂ趿૞૞檇畕啎ꞌ궭궭徍徍׍׍㉸㉸爒爒爒ࣶࣶ蔉璢蔉璢਻਻਻麞矦뢎ꏫ匐蕩䊰芈濷붶ᗉ呙뢀ᙎ빋ÿ䠦죥ᤸ嶔\u0000\u0000䕉䑎䊮艠\"}"}]}`

ココアがスローするエラーは次のとおりです。

Error Domain=NSCocoaErrorDomain Code=3840 "The operation could not be completed. (Cocoa error 3840.)" (16 進エスケープ シーケンス (上位文字なし) を UTF8 エンコード文字に変換できません。) UserInfo=0x688cfd0 {NSDebugDescription=Unable to 16 進数のエスケープ シーケンス (上位文字なし) を UTF8 でエンコードされた文字に変換します。}

4

1 に答える 1

2

解決策が見つかりました:)。問題は血まみれのNSJSonSerializationクラスではありませんでしたが、サーバー側の人たちが押し出していたコード化された画像です。彼らはBase64Stringであると主張しましたが、それは単純な文字列でした... AAAARGH!
問題を見つけ、正しい変換で画像を変更しました。これで、チャームのように機能します。

于 2012-09-26T09:07:40.660 に答える