Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何对对象响应的结果进行json编码?_Php_Json - Fatal编程技术网

Php 如何对对象响应的结果进行json编码?

Php 如何对对象响应的结果进行json编码?,php,json,Php,Json,我想从PHPAPI处理器脚本发送JSON。对于错误消息,我是这样访问它的: try { $tax = $client->taxForOrder([ "field"=>($value), "field"=>($value), //etc ); $data = $tax; //json encoding works here echo json_encode($data); } catch (TaxJar\Ex

我想从PHPAPI处理器脚本发送JSON。对于错误消息,我是这样访问它的:

try {
    $tax = $client->taxForOrder([
    "field"=>($value),
    "field"=>($value),
    //etc
);
$data = $tax;
//json encoding works here
echo json_encode($data);
}
catch (TaxJar\Exception $e) {
    // 406 Not Acceptable – transaction_id is missing
    echo $e->getMessage();
    // 406
    echo $e->getStatusCode();
}
如上所述,它返回纯文本“400错误请求–to_zip 66762未在to_state NJ400中使用”,如预期的那样。但是我想要JSON,因为jQuery$.ajax success函数正在寻找“JSON”的数据类型。 当我尝试时:

   $msg = $e->getMessage();
   echo json_encode($msg);

它不会返回任何东西。如何正确地获取类似{“error”,“msg”:“400个错误请求…”

您需要首先构建一个PHP数组


$response=['status'=>'error','msg'=>$e->getMessage()];
echo json_编码($response);
注意,当您将错误发送到客户端时,必须安全地进行异常管理。我的意思是,根据您处理异常的方式,您可以在异常消息中放置调试信息。这可能会给潜在的黑客提供信息


可能创建一个新的异常类,比如ClientErrorException类。并且仅当该类的异常发生时才向客户端发送异常消息。如果没有,只需发送一条通用消息“发生内部服务器错误”

您需要首先构建一个PHP数组


$response=['status'=>'error','msg'=>$e->getMessage()];
echo json_编码($response);
注意,当您将错误发送到客户端时,必须安全地进行异常管理。我的意思是,根据您处理异常的方式,您可以在异常消息中放置调试信息。这可能会给潜在的黑客提供信息


可能创建一个新的异常类,比如ClientErrorException类。并且仅当该类的异常发生时才向客户端发送异常消息。如果没有,只需发送一条通用消息“发生内部服务器错误”

谢谢-我不确定如何正确构建阵列,这就解决了问题。如何将响应中的“\u2013”转换为“–”?在我从API访问类的情况下,如何创建另一个新的异常类?我将创建一个ClientErrorException类。默认情况下,异常代码为400。此代码将用于发送HTTP状态代码。根据错误类型,可以指定更精确的代码。所有异常都将在我的应用程序的更高级别捕获,如果以前没有捕获到,我将处理所有异常。如果外部类或API引发异常,我可能会捕获并处理它,然后根据异常可能提供的信息,我会引发ClientErrorException或让原始异常扩散。对于字符编码问题(\u2013),您可以看一看以感谢您-我不确定如何正确构建阵列,这就解决了问题。如何将响应中的“\u2013”转换为“–”?在我从API访问类的情况下,如何创建另一个新的异常类?我将创建一个ClientErrorException类。默认情况下,异常代码为400。此代码将用于发送HTTP状态代码。根据错误类型,可以指定更精确的代码。所有异常都将在我的应用程序的更高级别捕获,如果以前没有捕获到,我将处理所有异常。如果外部类或API引发异常,我可能会捕获并处理它,然后根据异常可能提供的信息,我会引发ClientErrorException或让原始异常扩散。对于字符编码问题(\u2013),您可以查看