背景是:系统是php开发的,提供了一些第三方的API,然后有个对接方是JAVA开发的。
某一个接口,文档说明中也明确说了是字符串类型的,可以传空字符串,也可以不传这个参数。
但是对方偏偏给我传的是Null,然后呢,虽然系统没有返回报错信息。
但是传Null和空字符串的结果处理是完全不一样的。(传空字符串的结果是正确的)
php很容易碰见这种问题的,java通过http传过来的null,接收的时候就是字符串类型的“null”了,通过empty方法根本就判断不出来。
该怎么避免这种问题呢?
后续也挺搞的,关键是别人还因为这个问题给我们CEO打电话了。
对方的问题,他们不按照文档写代码还有理了?回复<aclass="referer"target="_blank">@NO17:哈哈哈,然后第二天另外一个第三方打电话给CEO说你们怎么不支持null字符串做参数,看楼主怎么办回复<aclass="referer"target="_blank">@leo108:java接口返回null很正常,不像js可以自动将null视为空,php接收后就变成“null”了,那就自己写一个empty方法得了。再说你让别人改接口,既然别人直接通知CEO了,说明是很强势的第三方,别人会给你改么。<aclass="referer"target="_blank">@NO17报复心这么强?我踩你是因为你的方法完全就是误人子弟,如果楼主的业务允许"null"这个字符串作为参数,岂不是懵逼。那么你踩我的理由呢?我们老大说我的时候我觉得挺委屈的,但是想一下也还好,我们是服务商,没有办法。不会啊。我测试了没发现null和Null在php中有问题啊。你们交互不是用的json?你可以拿你们的接口测试下。是json的数据。这没法避免,按数据通信规则来讲,这就是自定义数据通信协议,协议双方必须严格遵守,这跟哪方用php哪方用java无关。对接方没看懂有点失误是正常的,稍微解释一下就行了。一般第三方通信接口都有技术支持,你认为你的api文档清晰明了,他们有可能觉得是一团糟,相互理解一下,都是苦逼技术活,何必相互为难呢嗯,确实跟语言无关。无论哪种语言,都NUll和空是两种不同的对象。
json中value有null是没问题的, json标准中key类型是string,value类型有:
string
number
object
array
true
false
null
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。