• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-12 22:13:27 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我想反序列化从我在 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.}

向大家问好,

詹姆斯



Best Answer-推荐答案


好的,问题是转义字符和引号字符\",这就是为什么将它作为硬代码复制和粘贴时它起作用的原因,因为当硬编码时,编译器只读取引号 "字符。 如果将来有人遇到此问题,这可能会非常烦人: 问题是服务器 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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap