首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >wcf wcf服务端中的JSOn对象未正确反序列化

wcf wcf服务端中的JSOn对象未正确反序列化
EN

Stack Overflow用户
提问于 2016-03-04 14:20:18
回答 2查看 358关注 0票数 16

我在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字符串。

任何人都可以帮助解决这个问题?

EN

回答 2

Stack Overflow用户

发布于 2016-09-13 16:30:31

嗯,我想说TomSwift在正确的轨道上……很明显,断开的JSON只是在字符串的末尾缺少"}“。这看起来确实像是被正则表达式净化的东西……你真的应该找到问题的根源;但是,为了在你弄清楚问题的同时快速而肮脏地修复它,你可以在收到的JSON上运行你自己的正则表达式,如果它不是以"}”结尾,那么就添加它……首先做一些类似的事情:'/"0-9+$/‘(检查末尾是否有一个开放的数字字符串,如果有,通过添加“)然后检查是否'/}$/’(如果}是最后一个字符,如果不是:添加它)。

请记住,以上只是一个暂时的修复(因为它有点重,也不是很漂亮),但我可以想象自己被迫做这样的事情,仅仅是因为时间限制。如果问题实际上是来自API内部,您可以告诉创建者,并在他们修复它时使用类似于上面的修复。

PS。如果有人选择使用类似上面的修复,请在代码中留下注释,解释您为什么要这样做(而不是告诉我们您做了什么...)。

票数 1
EN

Stack Overflow用户

发布于 2016-08-20 05:20:51

我最近在PHP/CodeIgniter中遇到了类似的问题,问题是JSON在到达我的处理程序之前已经通过一些过于雄心勃勃的正则表达式进行了“清理”。也许在WCF中也会发生类似的清理?

我会尝试的事情:

  1. 使用Charles Proxy确认请求(POST?)实际上是像你所期望的那样发送完整的身体。
  2. 改为尝试内容类型应用程序/json。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35789283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档