菜鸟教程小白 发表于 2022-12-12 22:13:27

IOS JSON 反序列化失败 - STIG/NSJSONSerializer


                                            <p><p>我想反序列化从我在 IOS 中运行的 Web 服务接收到的简单 JSON。 </p>

<pre><code>@&#34;[{\&#34;NickName\&#34;:\&#34;James Roeiter3\&#34;,\&#34;TempId\&#34;:\&#34;634783760669935686\&#34;,\&#34;LDAP\&#34;:\&#34;XUserName15\&#34;,\&#34;SecToken\&#34;:null},{\&#34;NickName\&#34;:\&#34;James Roeiter2\&#34;,\&#34;TempId\&#34;:\&#34;634783760654574807\&#34;,\&#34;LDAP\&#34;:\&#34;XUserName16\&#34;,\&#34;SecToken\&#34;:null}]&#34;
</code></pre>

<p>我已经做过很多次了,
我尝试使用 NSJsonSerializer 和 STIG 反序列化它:</p>

<pre><code>NSArray* array1= (NSArray*);

NSArray* array2 = (NSArray*);
</code></pre>

<p>现在,问题很奇怪,如果我将调试器中的 JSON 复制粘贴到硬编码字符串中并尝试解析它,它可以工作,如果我在运行时收到它,它会失败,STIG 说它 JSON 无法启动和 '[' 。
我尝试遍历所有字符以查找空字符(我不太确定它是什么),但复制/粘贴和运行时字符串之间的所有字符看起来都一样。
我还尝试格式化为 UTF8 并尝试使用这些格式 - 也失败了。</p>

<p>知道它会是什么或如何解决吗?我真的会在这里感谢您的帮助,因为我非常坚持这个假设是简单的问题,但在我解决这个问题之前无法取得进展......</p>

<p>编辑:
我收到的确切错误是这样的:</p>

<pre><code>2012-07-21 23:59:31.376 Whisper.Client.IOS Error : Error Domain=NSCocoaErrorDomain Code=3840 &#34;The operation couldn’t be completed. (Cocoa error 3840.)&#34; (No string key for value in object around character 1.) UserInfo=0xc9632e0 {NSDebugDescription=No string key for value in object around character 1.}
</code></pre>

<p>向大家问好,</p>

<p>詹姆斯</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>好的,问题是转义字符和引号字符\",这就是为什么将它作为硬代码复制和粘贴时它起作用的原因,因为当硬编码时,编译器只读取引号 "字符。
如果将来有人遇到此问题,这可能会非常烦人:
问题是服务器 url 对数据进行了编码(C# 服务器端),IOS url 解码以其弱点而闻名,并且 apprenlty 不会从字符串中删除\"字符。</p>

<p>这是我目前的IOS解码代码:</p>

<pre><code>json = ;
json = ;
json = ;
int lastChar = -1;
json = ;
json = ;
returnjson;
</code></pre>

<p>如果首先删除 json 开头和结尾的引号,那么我会删除 "字符之前的所有\字符。</p>

<p>这似乎工作顺利,如果你认为我做错了什么,请纠正我。 </p>

<p>希望有一天能对某人有所帮助。</p>

<p>干杯,</p>

<p>詹姆斯</p></p>
                                   
                                                <p style="font-size: 20px;">关于IOS JSON 反序列化失败 - STIG/NSJSONSerializer,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/11594617/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/11594617/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: IOS JSON 反序列化失败 - STIG/NSJSONSerializer