我在iOS项目上工作,并通过wcf网络服务将Json字符串发送到后端,它成功地为许多用户工作,但对于一些用户后端得到不完整的json字符串。
生成Json字符串的代码
NSData *data = [NSJSONSerialization dataWithJSONObject:EmployeeDetails options:0 error:nil];
NSString *JsonString = [[NSString alloc] initWithData:data
encoding:NSUTF8StringEncoding];
并通过以下代码附加带有请求的json字符串
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:[jsonString dataUsingEncoding:NSUTF8StringEncoding]];
EmployeeDetails是包含员工详细信息的NSMutableDictionary。
和
下面是从BackEnd反序列化的成功Json字符串
{"FirstName":"Donald","LastCBPaymentType":6,"AcceptEmail":true,"CellPhone":"321-300-6874","Position":"3","CarrierNum":"4","EmpNum":"96874"}
和不完整的Json字符串
{"FirstName":"roset","LastCBPaymentType":6,"AcceptEmail":true,"CellPhone":"321-300-6874","Position":"3","CarrierNum":"4","EmpNum":"98799
某用户后台出现不完整的json字符串。
任何人都可以帮助解决这个问题?
发布于 2016-09-13 16:30:31
嗯,我想说TomSwift在正确的轨道上……很明显,断开的JSON只是在字符串的末尾缺少"}“。这看起来确实像是被正则表达式净化的东西……你真的应该找到问题的根源;但是,为了在你弄清楚问题的同时快速而肮脏地修复它,你可以在收到的JSON上运行你自己的正则表达式,如果它不是以"}”结尾,那么就添加它……首先做一些类似的事情:'/"0-9+$/‘(检查末尾是否有一个开放的数字字符串,如果有,通过添加“)然后检查是否'/}$/’(如果}是最后一个字符,如果不是:添加它)。
请记住,以上只是一个暂时的修复(因为它有点重,也不是很漂亮),但我可以想象自己被迫做这样的事情,仅仅是因为时间限制。如果问题实际上是来自API内部,您可以告诉创建者,并在他们修复它时使用类似于上面的修复。
PS。如果有人选择使用类似上面的修复,请在代码中留下注释,解释您为什么要这样做(而不是告诉我们您做了什么...)。
发布于 2016-08-20 05:20:51
我最近在PHP/CodeIgniter中遇到了类似的问题,问题是JSON在到达我的处理程序之前已经通过一些过于雄心勃勃的正则表达式进行了“清理”。也许在WCF中也会发生类似的清理?
我会尝试的事情:
https://stackoverflow.com/questions/35789283
复制相似问题