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

我想反序列化从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]; 

现在,这个问题很奇怪,如果我复制从debugging器粘贴JSON到一个硬编码的string,并试图parsing它,它的工作原理,如果我在运行时收到它,失败,STIG说,它的JSON不能以' '。 我尝试通过查找空字符的所有字符(我不太确定它是什么),但复制/粘贴和运行时string之间的所有字符看起来相同。 我也尝试格式化为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#服务器端),IOSurl解码是已知的弱点和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的开头和结尾删除引号,然后删除“chars”之前的所有\ chars。

这似乎现在工作顺利,如果你认为我做错了,请纠正我。

希望有一天能帮助别人。

干杯,

詹姆士