【问题标题】:how should i decode the correct json response?我应该如何解码正确的 json 响应?
【发布时间】:2019-11-09 01:33:10
【问题描述】:

我正在使用 Laravel 5.7 构建一个提供 JSON 响应的 API。我正在创建以下 JSON,但它需要一些更改。表包含 booking_pics 列,其中使用 , 分隔存储多个图像。我想获取 json 作为数组中的对象。我是显示 json 但只有最后一个图像显示其他不是,需要解决方案。

控制器:

$get_booking_details= DB::table('table_booking_list')
            ->join('table_booking_details', 'table_booking_list.booking_id', '=', 'table_booking_details.booking_id')
            ->select('table_booking_details.*')
            ->where('table_booking_details.booking_id',$booking_id)
            ->get();

            foreach($get_booking_details as $item)
            {
                foreach(explode(",",$item->booking_pics) as $items)
                {
                   $item->booking_pics=[["image" => $items]];
                }
            }
            return response()->json(['success' => '1','data' =>$get_booking_details]);

json 响应:

{
    "success": "1",
    "data": [
        {
            "id": 1,
            "booking_list_id": 1,
            "booking_id": 1,
            "booking_name": "hockey stadium",
            "booking_area": "kolhapur",
            "booking_status": 0,
            "time": "6.00 am to 8.00pm",
            "booking_pics": [
                {
                    "image": "http://192.168.1.132:8000/images/ground_pic/2.jpg"
                }
            ],
            "available_sports": "hockey,cricket",
            "booking_amenities": "parking,toilet,water",
            "booking_rating": 4.5,
            "booking_area_address": "MSEB Ring Road, Datta Colony, Kolhapur, Maharashtra, 416008",
            "longitude": "85.501980",
            "latitude": "23.624420",
            "updated_at": "2019-06-26 16:42:02",
            "created_at": "0000-00-00 00:00:00"
        }
    ]
}

必需的 json:

{
    "success": "1",
    "data": [{
        "id": 1,
        "booking_list_id": 1,
        "booking_id": 1,
        "booking_name": "hockey stadium",
        "booking_area": "kolhapur",
        "booking_status": 0,
        "time": "6.00 am to 8.00pm",
        "booking_pics": [{
                "image": "http://192.168.1.132:8000/images/ground_pic/1.jpg"
            },
            {
                "image": "http://192.168.1.132:8000/images/ground_pic/2.jpg"
            }
        ],
        "available_sports": "hockey,cricket",
        "booking_amenities": "parking,toilet,water",
        "booking_rating": 4.5,
        "booking_area_address": "MSEB Ring Road, Datta Colony, Kolhapur, Maharashtra, 416008",
        "longitude": "85.501980",
        "latitude": "23.624420",
        "updated_at": "2019-06-26 16:42:02",
        "created_at": "0000-00-00 00:00:00"
    }]
}

【问题讨论】:

  • 你可以试试$item->booking_pics[]=["image" => $items];
  • @DhananjayKyada 没有错误发生
  • @DhananjayKyada 错误'非法字符串偏移'图像''请先生需要帮助
  • 请尝试$item->images[]=$items
  • @DhananjayKyada [] 运算符不支持字符串此错误准确请检查所需的 json

标签: php json laravel


【解决方案1】:

最快的方法是创建模型并将数据库中的数据转换为 json

在模型中

protected $casts = [
    'booking_pics' => 'json',
];

【讨论】:

    【解决方案2】:

    这样做

            foreach($get_booking_details as $item)
            {
                foreach(explode(",",$item->booking_pics) as $items)
                {
                   $item->booking_pics["image"][] = $items;
                }
            }
    

    【讨论】:

      猜你喜欢
      • 2019-09-17
      • 2012-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多