Php 邮差秀出人意料';A';在json响应中,但json格式良好
我正在用Silex框架开发一个后端,我正在测试这段代码Php 邮差秀出人意料';A';在json响应中,但json格式良好,php,json,silex,postman,Php,Json,Silex,Postman,我正在用Silex框架开发一个后端,我正在测试这段代码 foreach($P as $key=>$value) { $strInsert =$key."=>".$value; array_push($json,$strInsert); } print_r($json); return json_encode($json); 在每个调用包含foreach的路由的浏览器上,它
foreach($P as $key=>$value)
{
$strInsert =$key."=>".$value;
array_push($json,$strInsert);
}
print_r($json);
return json_encode($json);
在每个调用包含foreach的路由的浏览器上,它都能很好地打印,并且不同的json验证器认为给出的输出格式良好。
在《邮递员》中,当我点击“pretty”Json时,它会显示意外的“A”
。
在raw、html和其他视图选项上,json文档打印没有问题。 我应该继续为这个问题担心还是忽略它?
如果我不应该忽视它,有解决办法吗 在Silex framework上做了大量工作来构建我的后端之后,多亏了postman(一款chrome应用程序,非常适合测试http协议),我发现php以Json格式等待响应
Example A :
call route /path/getinfo/ with method get
execute the code --> result=$app->SomeFunctionThatInterrogatesDB(param1...) **firing error
return result;
这里的交易是这样的:在somefunction中,您向db进行查询,它返回一行(或多行,取决于查询类型),PHP认为响应是用JSON构造的,但它不是,因此它会触发该错误。
意外的“A”只是意味着“嘿,我的json在哪里?我什么都不懂!”
修复或解决方法只是将结果封装在路由中的json格式中。
严格来说,使用
return$app->json(result)
更改返回结果
。
这段代码基于silex,但即使您使用silex之外的其他框架,解决方案也是将最终结果字符串化为json格式
|*Frontend*| route request | *Backend* | query |*Database*|
| |------------------->| |---------->| |
| | Response | json(result) | array | |
| |<-------------------|<--------------|<----------| |
|*前端*|路由请求|*后端*|查询|*数据库*|
| |------------------->| |---------->| |
||响应| json(结果)|数组||
||您是否将JSON属性封装在JSON对象中?所以它以大括号开始和结束。通常情况就是这样,你能粘贴格式良好的json吗?很抱歉,现在才回复,我一直在忙着工作:像@Puya说的那样,json对象的封装很糟糕。谢谢你的回答