Laravel php如何以JSON格式返回带有特定参数的响应

Laravel php如何以JSON格式返回带有特定参数的响应,php,json,laravel-5.3,response,Php,Json,Laravel 5.3,Response,当我收到json格式的消息时,如下所示: { "Details":{ "Type":"Cash", "Payid":"PAY123456", "Amount":"9000,00", "Status":"Successful", } } 我需要返回以下JSON格式的响应,其中只包含接收到的两个参数(Type&Payid) { "Details": { "Type": "Cash", "Payid": "PAY123456

当我收到json格式的消息时,如下所示:

{
  "Details":{
      "Type":"Cash",
      "Payid":"PAY123456",
      "Amount":"9000,00",
      "Status":"Successful",
  }
}
我需要返回以下JSON格式的响应,其中只包含接收到的两个参数(Type&Payid)

{
  "Details": {
    "Type": "Cash",
    "Payid": "PAY123456"
    }
}
目前在我的控制器中,它将返回收到的全部详细信息。 但是我如何修改它,使它只返回特定的参数呢

public function returnResponse(Request $request)
{
    $datas= $request->getContent();
    $returnData= json_decode($datas, true);
    return response()->json($returnData);
}

这是一种方法:

public function returnResponse(Request $request){
    $datas = $request->getContent();
    $parsedJson = json_decode($datas, true);
    $returnData = array('Details' => array(
        'Type' => $parsedJson['Details']['Payid'],
        'Payid' => $parsedJson['Details']['Payid'],
        'Confirmation' => 0 // do the same in this line if you want to add more
    ));
    return response()->json($returnData);
}
此代码假定“详细信息”中始终包含“Type”和“Payid”

结果将是:

Array
(
    [Details] => Array
        (
            [Type] => PAY123456
            [Payid] => PAY123456
            [Confirmation] => 0
        )

)

注意,如果您只想将
确认
添加到原始数组,可以使用:

$returnData['Details']['Confirmation'] = 0;

这并不奇怪,因为在将其作为JSON发送之前,您不会修改内容
$datas
。尝试调试$datas中的内容,修改其内容,然后将其作为JSON发送。hi@marekful,我可以知道如何修改$datas的内容吗?$datas的内容是{“详细信息”:{“类型”:“现金”、“Payid”:“PAY123456”、“金额”:“9000,00”、“状态”:“成功”}有多种方法。这主要取决于接收数据的可靠性。您可以使用
unset($returnData['Details']['Amount']);未设置($returnData['Details']['Status'])。假设它是stdClass的实例,您可以
取消设置($datas->Details->Amount)
,等等。
json_decode
中的@marekful第二个参数表示数组;)(由于他们使用的是
json\u decode
,我们可以假设
$datas
只是一个字符串)