【问题标题】:convert json array to json object in laravel 5.7在laravel 5.7中将json数组转换为json对象
【发布时间】:2019-05-23 11:46:27
【问题描述】:

我正在使用 laravel 中的连接查询从数据库中获取数据并传递给 json 并在数组中得到一些结果,但我想要下面给出的对象

控制器代码:

$resultPastActivity= DB::table('table_user_create_activity')
                            ->join('table_sub_category','table_user_create_activity.selected_activity_id', '=', 'table_sub_category.sub_category_id')
                            ->select('sub_category_name','area','activity_type','activity_date','start_time','end_time')
                            ->whereDate('activity_date', '<', $todayDate)
                            ->where('user_id',$user_id)
                            ->get();

 return response()->json(['success' => '1','data' =>$resultPastActivity]);

上面的代码将给出数组中的以下json实际上我想要对象中的json

{
    "success": "1",
    "data": [
        {
            "sub_category_name": "Badminton",
            "area": "Rankala lake",
            "activity_type": "1",
            "activity_date": "2018-01-12",
            "start_time": "15:04:49",
            "end_time": "20:05:69"
        },
        {
            "sub_category_name": "Football",
            "area": "Devakar panad",
            "activity_type": "1",
            "activity_date": "2018-01-15",
            "start_time": "15:04:49",
            "end_time": "20:05:69"
        },
    ]
}



i want json as follows
{
    "success": "1",
    "data": {
        {
            "sub_category_name": "Badminton",
            "area": "Rankala lake",
            "activity_type": "1",
            "activity_date": "2018-01-12",
            "start_time": "15:04:49",
            "end_time": "20:05:69"
        },
        {
            "sub_category_name": "Football",
            "area": "Devakar panad",
            "activity_type": "1",
            "activity_date": "2018-01-15",
            "start_time": "15:04:49",
            "end_time": "20:05:69"
        },
    }
}

【问题讨论】:

  • 你试过 flatten() 吗?这是集合的一种方法。
  • 快速完成此操作$obj = json_decode(json_encode($array));
  • 我试过但得到相同的 json 和数组?建议另一种方法
  • 这不是有效的 json,要在一个结构中有多个对象,您需要将其包装在一个数组中,您想要一个不可能的多个对象的对象

标签: laravel


【解决方案1】:

试试这个,json_encode($json, JSON_FORCE_OBJECT) JSON_FORCE_OBJECT

$result=array();
$result["0"]=$resultPastActivity;
$json=json_encode((object)$result,JSON_FORCE_OBJECT);
return response()->json(['success' => '1','data' =>$json]);

【讨论】:

  • 我试过但无法得到预期的结果请需要其他解决方案
  • 是的,这是结果包含“\0”,这不是预期的{“成功”:“1”,“数据”:“{\“0\”:{\“0\”:{ \"sub_category_name\":\"羽毛球\",\"面积\":\"兰卡拉湖\",\"activity_type\":\"1\",\"activity_date\":\"2018-01-12 \",\"start_time\":\"15:04:49\",\"end_time\":\"20:05:69\"},\"1\":{\"sub_category_name\":\ "足球\",\"地区\":\"Devakar panad\",\"activity_type\":\"1\",\"activity_date\":\"2018-01-15\",\"start_time\ ":\"15:04:49\",\"end_time\":\"20:05:69\"},}}}"
  • 请显示更新后的答案 add $json=json_encode((object)$result,JSON_FORCE_OBJECT);使用(对象)@smitaputil 键入 cast $result
【解决方案2】:

你想要的是不是一个有效的JSON,你可以在这里查看:https://jsonformatter.curiousconcept.com/

因此,您无法创建这样的输出,并且如果您强制它,将接收它的应用程序将无法正确解析它,因此它没有意义。

【讨论】:

    猜你喜欢
    • 2021-08-29
    • 2012-07-21
    • 2020-10-02
    • 1970-01-01
    • 2018-10-11
    • 2018-04-16
    • 2018-09-12
    相关资源
    最近更新 更多