【问题标题】:Formating JSON from Laravel Eloquent Response从 Laravel Eloquent Response 格式化 JSON
【发布时间】:2020-03-30 09:07:45
【问题描述】:

我收到了 Eloquent 的回复,我需要完全按照以下方式对其进行格式化:

{
    name: "James",
    data: {
      "2017-01-01 00:00:00": 300,
      "2017-01-02 00:00:00": 600,
    }
  },

我得到的当前响应是:

{
name: "James",
date: "2017-01-01 00:00:00",
amount: "300"
},
{
name: "James",
date: "2017-01-02 00:00:00",
amount: "600"
},

我已经绑定了,但是格式不正确:

 $chartData = [];

    foreach($charts as $chart){

        array_push($chartData, [
            'name' => $chart->name,
            'data' => json_encode([$chart->date. ':' .$chart->amount], true)
        ]);

    }

结果是:

{
name: "James",
data: "{"2017-01-01T00:00:00.000000Z":"300"}"
},
{
name: "James",
data: "{"2017-01-02T00:00:00.000000Z":"600"}"
},

谢谢

【问题讨论】:

    标签: json laravel-5 eloquent


    【解决方案1】:

    你可以这样做:

    $chartData = [];

    foreach($charts as $chart){
    
        array_push($chartData, [
            'name' => $chart->name,
            'data' => $chart->date. ':' .$chart->amount
        ]);
    
    }
    

    json_encode($chartData);

    【讨论】:

    • 返回 - data: "2019-12-03 00:00:00:1000" 我需要 - data: {"2019-12-03 00:00:00:1000"} 也在单独的对象中
    【解决方案2】:

    这必须分两步完成:

    function normalizeChartData($charts){
        $chartData = [];
        //1) grab dates and amounts for each name.
        foreach($charts as $chart)
            foreach($chart->data as $data){
                if(isset($chartData[$chart->name]) && is_array($chartData[$chart->name]))
                  $chartData[$chart->name][$data->date] = $data->amount;
                else
                  $chartData[$chart->name] = [$data->date => $data->amount];
            }
        //2) format it to look as you want.
        $enhancedChartData = [];
        foreach($chartData as $name => $date_amount){
            $temp = [
                'name' => $name,
                'data' => []
            ];
    
            foreach($date_amount as $da)
                $temp['data'][] = $da;
    
            $enhancedChartData[] = $temp;
        }
        return $enhancedChartData;
    }
    

    【讨论】:

      猜你喜欢
      • 2021-02-04
      • 1970-01-01
      • 1970-01-01
      • 2017-08-29
      • 1970-01-01
      • 2018-07-18
      • 2016-08-31
      • 2015-06-01
      • 2017-04-19
      相关资源
      最近更新 更多