在进行MAC机上客户端编程时,控制台输出的json串如下:
然而将此json串传至WebServices服务端时接收到的json串却变成了如下图格式:
json串中的双引号变成了"的解决办法,满网都是JAVA的解决办法,这里只说PHP的解决办法。
首先把你出问题的字段dump出来,不要用var_dump.
dump($data["chosed_list"]);
这时候会显示你数据库中存的内容,即 [{"name":"mary","weight":"75kg"}]等类似的内容,然后直接用str_replace即可解决,如下:
//dump(str_replace('"','"',$data["chosed_list"]));
$data["chosed_list"] = str_replace('"','"',$data["chosed_list"]);
然后你接下来做你其他的业务逻辑吧。在这被坑了好久,特此记录下来。
方法二:eplace掉啊,传的时候用"和用"一样的,而且不会引用“内部有"这种情况,直接转就可以了。
猜测你出现这种情况的原因可能是传数据的时候,你的这个json在html的标签中,而非<script>中,一般对于html中的内容除了<script>中的变量,其它都会默认进行html编码的,以此来防止出现冲突,这种操作是正确的。假如你在服务端替换Replace可以解决,那么就建议你在replace,假如不行,就要看你json这个字符写在什么地方了,竟然让浏览器认为你的这个json是文本内容。
外加说一句,不要担心replace的时候会替换错,html编码的时候不会出现其它字符会编码成"这种情况的,放心替换吧。
|