c# - JSOn 对象未在 wcf web 服务端正确反序列化

标签 c# ios json web-services wcf

我正在开发 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/

相关文章:

c# - 构建大量项目和解决方案时如何节省磁盘空间?

c# - GCHandle.Alloc 是否分配内存?

c# - 简单企业库控制台应用程序拒绝编译

ios - AVAudioEngine.connect 在硬件而非模拟器上崩溃

javascript - jQuery 漂亮的选择元素 - dropkick js 和 iOs

ios - 从 json 响应 Swift 中获取值(value)

c# - 根据数据库值预选列表框中的多个项目

ios - 在cocos2dx中添加Chartboost

javascript - json 字符串化和 json 解码问题

c++ - 使用 yaml-cpp 解析 YAML 时的内存消耗