【问题标题】:Laravel php How to return response with certain parameters in JSON formatLaravel php如何以JSON格式返回带有某些参数的响应
【发布时间】:2018-02-26 11:42:25
【问题描述】:

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

{
  "Details":{
      "Type":"Cash",
      "Payid":"PAY123456",
      "Amount":"9000,00",
      "Status":"Successful",
  }
}

我需要返回以下 JSON 格式的响应,仅包含收到的两个参数(类型和 Payid)

{
  "Details": {
    "Type": "Cash",
    "Payid": "PAY123456"
    }
}

目前在我的控制器中,它将返回收到的全部详细信息。 但是我该如何修改它,让它只返回某些参数。

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

【问题讨论】:

  • 这并不奇怪,因为您在将内容作为 JSON 发送之前没有修改 $datas。尝试调试 $datas 中的确切内容,修改其内容,然后将其作为 JSON 发送。
  • 嗨@mar​​ekful,我可以知道如何修改内容$datas吗?内容 $datas 是 { "Details":{ "Type":"Cash", "Payid":"PAY123456", "Amount":"9000,00", "Status":"Successful", } }
  • 有不止一种方法。这主要取决于接收到的数据的可靠性。解码后可以使用unset($returnData['Details']['Amount']); unset($returnData['Details']['Status']);
  • 假设是stdClass的实例,可以unset($datas->Details->Amount)等...
  • @marekful 在json_decode 中的第二个参数表示数组;)(由于他们使用json_decode,我们可以假设$datas 只是一个字符串)

标签: php json laravel-5.3 response


【解决方案1】:

这是一种方法:

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);
}

此代码假定您将始终在“详细信息”中包含“类型”和“付款”。

结果将是:

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

)

注意,如果你只是想在原始数组中添加Confirmation,你可以使用:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-18
    • 2023-03-21
    • 2013-06-20
    • 1970-01-01
    相关资源
    最近更新 更多