【问题标题】:Postman show unexpected 'A' in json response , but json is well formed邮递员在 json 响应中显示意外的“A”,但 json 格式正确
【发布时间】:2017-03-02 04:08:35
【问题描述】:

我正在使用 Silex 框架开发后端,并且正在测试这段代码

foreach($P as $key=>$value)
    {
        $strInsert  =$key."=>".$value;      
        array_push($json,$strInsert);                 
    }
    print_r($json);
    return json_encode($json);

在每个调用包含 foreach 的路由的浏览器上,它都能很好地打印出来,并且给出的输出被不同的 json 验证器认为格式正确。 在邮递员中,当我单击“漂亮”Json 时,它显示Unexpected 'A'
在 raw、html 和其他视图选项中,json 文档的打印没有问题。 我应该继续担心这个问题还是忽略它? 如果我不应该忽略它,是否有解决方法?

【问题讨论】:

  • 您是否将 JSON 属性包含在 JSON 对象中?所以它以大括号开始和结束。通常是这样的
  • 你能粘贴那个格式良好的 json 吗?
  • 很抱歉现在才回复,我一直在忙于工作:就像@Puya所说的那样,它是一个糟糕的json对象封装。谢谢你的回答

标签: php json silex postman


【解决方案1】:

在 Silex 框架上进行大量工作以构建我的后端后,感谢 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 中,您对数据库进行查询并返回一行(或多行,具体取决于查询的类型),PHP 认为响应是 JSON 结构,但事实并非如此,因此它会触发该错误。
那个意外的“A”只是意味着 “嘿,我的 json 在哪里?我什么都不懂!”
修复或解决方法是只是为了将您的结果以 json 格式封装在路由中。

严格把return result改成return $app->json(result)。 此代码基于 silex,但即使您使用 silex 之外的其他框架,解决方案是将最终结果字符串化为 json 格式。这里有一个小图(如果你愿意,可以叫我 davinci)更好地理解流程。

 |*Frontend*|  route request     |   *Backend*   | query     |*Database*|
 |          |------------------->|               |---------->|          |
 |          |    Response        | json(result)  |  array    |          |
 |          |<-------------------|<--------------|<----------|          |

希望我的回答能对大家有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2011-08-22
    • 1970-01-01
    • 2017-12-15
    • 1970-01-01
    • 2019-12-01
    • 2020-11-24
    相关资源
    最近更新 更多