我正在开发 iOS 项目并通过 wcf web 服务将 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。
和
这里是从后端反序列化成功的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字符串。
有人可以帮助解决这个问题吗?
最佳答案
好吧,我会说 TomSwift是在正确的轨道上......很明显,损坏的 JSON 只是从字符串的末尾丢失了“}。这确实看起来像是被正则表达式清理过的东西...... 您确实应该找到问题的根源;但是对于快速而肮脏的修复当你弄清楚时,你可以在你收到的 JSON 上运行你自己的正则表达式,如果它不以 "} 结尾,只需添加它......首先做这样的事情:'/[0-9]+$/'(检查最后是否有一个开放的数字字符串,如果有,你通过添加 "关闭它)然后检查是否 '/}$/'(如果 } 是最后一个字符,如果不是:添加它)。
请记住,以上只是一个临时修复(因为它有点重而且不是那么漂亮),但我可以想象自己被迫做这样的事情,仅仅是因为时间限制。如果问题实际上来自 API 内部,您可以将其告知创建者并在他们修复它时使用类似上面的修复方法。
附言。如果有人确实选择使用上述修复程序,请拜托拜托,看在您所珍视的一切的份上,请在代码中留下评论,解释您这样做的原因(而不是告诉我们你做了什么...)。
关于c# - JSOn 对象未在 wcf web 服务端正确反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35789283/