gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:49:20 25 4
gpt4 key购买 nike

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

@"[{\"NickName\":\"James Roeiter3\",\"TempId\":\"634783760669935686\",\"LDAP\":\"XUserName15\",\"SecToken\":null},{\"NickName\":\"James Roeiter2\",\"TempId\":\"634783760654574807\",\"LDAP\":\"XUserName16\",\"SecToken\":null}]" 

我已经做过很多次了,我尝试使用 NSJsonSerializer 和 STIG 对其进行反序列化:

NSArray* array1= (NSArray*)[jsonString JSONValue]; 

NSArray* array2 = (NSArray*)[NSJSONSerialization JSONObjectWithData:jsonString options: NSJSONReadingMutableContainers error:&error];

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

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

编辑:我收到的确切错误是:

2012-07-21 23:59:31.376 Whisper.Client.IOS[1058:fe03] Error : Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (No string key for value in object around character 1.) UserInfo=0xc9632e0 {NSDebugDescription=No string key for value in object around character 1.}

祝大家好运,

詹姆斯

最佳答案

好的,问题出在转义字符和引号字符\",这就是为什么将其复制并粘贴为硬代码时它起作用的原因,因为在硬编码时,编译器只读取引号 "字符。如果将来有人遇到这个问题,这可能会非常烦人:问题是服务器 url 对数据进行了编码(C# 服务器端),IOS url 解码以其弱点而闻名,并且 apprenlty 不会从字符串中删除\"字符。

这是我当前的 IOS 解码代码:

json = [json stringByReplacingOccurrencesOfString:@"+" withString:@" "];
json = [json stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
json = [json stringByReplacingCharactersInRange:NSMakeRange(0,1) withString:@""];
int lastChar = [json length]-1;
json = [json stringByReplacingCharactersInRange:NSMakeRange(lastChar,1) withString:@""];
json = [json stringByReplacingOccurrencesOfString:@"\\" withString:@""];
return json;

如果先删除 json 开头和结尾的引号,然后删除 "字符之前的所有\字符。

现在看来一切顺利,如果您认为我做错了什么请指正。

希望有一天能对某人有所帮助。

干杯,

詹姆斯

关于IOS JSON 反序列化失败 - STIG/NSJSONSerializer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11594617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com