【问题标题】:How to split json - using laravel如何拆分 json - 使用 laravel
【发布时间】:2019-08-21 09:45:40
【问题描述】:

我想拆分 json 对象,我正在使用邮递员,这是我的正文请求,我正在使用 laravel 框架,我是新手,我不知道如何拆分 json。

这是我的实际 json,我想将此主体请求拆分为两个对象 我不知道如何在 php laravel 中做到这一点。

{
    "email": "shahzad@ovadamd.com",
    "password": "admin123",
    "password_confirmation": "admin123",
    "status": 0,
    "first_name": "Shahzad",
    "middle_name": "Hussain",
    "last_name": "Shah",
    "date_of_birth": "2015-01-01",
    "gender": "M",
    "area_id": 1,
    "address": "Minhatten NY",
    "city": "New York",
    "state": "Washington",
    "zip": "12312",
    "fax": "111-111-1111",
    "phone_extension": "2471",
    "work_phone": "111-111-1111",
    "phone_no": "111-111-1111",
    "emergency_contact": "111-111-1111",
    "social_security": "111-11-1111",
    "module_id": 1,
    "role_id": 1,
    "speciality_id": 1,
    "facility_id": 1,
    "priv_title": "can edit doctor",
    "priv_key": "ced",
    "display_group": "Doctor",
    "prev_id" :1
}

我想像这样将 json 拆分成两个对象:

{
    "user_profile": {
        "email": "shahzadg@ovadamd.com",
        "password": "admin123",
        "password_confirmation": "admin123",
        "status": 0,
        "first_name": "Shahzad",
        "middle_name": "Hussain",
        "last_name": "Shah",
        "date_of_birth": "2015-01-01",
        "gender": "M",
        "area_id": 1,
        "address": "Minhatten NY",
        "city": "New York",
        "state": "Washington",
        "zip": "12312",
        "fax": "111-111-1111",
        "phone_extension": "2471",
        "work_phone": "111-111-1111",
        "phone_no": "111-111-1111",
        "emergency_contact": "111-111-1111",
        "social_security": "111-11-1111",
        "module_id": 2,
        "role_id": 1
        },

    "prev":{

        "speciality_id": 1,
        "facility_id": 1,
        "priv_title": "can edit doctor",
        "priv_key": "ced",
        "display_group": "Doctor",
        "prev_id" :1
    }
}

我们将非常感谢您的帮助!

     $body = $request->all();

    $userProfile = $body['user_profile'];
    $userPrev = $body['prev'];

    $bodyObj = array_merge($userProfile, $userPrev);
    $bodyObj['token'] = $body['token'];

    $validator = UserValidations::validateUser($request->all());


           public function register(Request $request) {
    $body = $request->all();

    $userProfile = $body['user_profile'];
    $userPrev = $body['prev'];

    $bodyObj = array_combine($userProfile, $userPrev); array_chunk($body,true);
    $bodyObj['token'] = $body['token'];

    $validator = UserValidations::validateUser($bodyObj);

    if ($validator->fails()) {
        return response([
            'status' => false,
            'message'   => __('messages.validation_errors'),
            'errors' => $validator->errors()->all()
        ], 200);
    }

    DB::beginTransaction();

    try{

        $token = JWTAuth::getToken();
        $apy = JWTAuth::getPayload($token)->toArray();
        $request->merge(['module_id' => $apy['module_id']]);
        $request->request->add(['created_by' => Auth::user()->id]);
        $request->merge(['password' =>  bcrypt($request->input('password'))]);
        $user = $this->user->create($request->only($this->user->getModel()->fillable));
        $request->request->add(['user_id' => $user->id]);
        $this->userBasicInfo->create($request->only($this->userBasicInfo->getModel()->fillable));
        $this->userContactDetails->create($request->only($this->userContactDetails->getModel()->fillable));
        $this->userAccessModule->create($request->only($this->userAccessModule->getModel()->fillable));
        $this->userRoles->create($request->only($this->userRoles->getModel()->fillable));
        $this->verifyUser->create(['user_id' => $user->id, 'token' => str_random(40)]);

        $this->userSpeciality->create($request->only($this->userSpeciality->getModel()->fillable));
        $this->userFacility->create($request->only($this->userFacility->getModel()->fillable));
        $this->userDefinition->create($request->only($this->userDefinition->getModel()->fillable));
        $this->userPrev->create($request->only($this->userPrev->getModel()->fillable));


        Mail::to($user->email)->send(new VerifyMail($user));

        DB::commit();

        return response([
            'status' => true,
            'message' => 'User registered successfully',
        ], 200);

    } catch(\Exception $ex) {
        DB::rollback();
        return response([
            'status' => false,
            'message' => __('messages.validation_errors'),
            'errors' => $ex->getMessage(),
        ], 500);
    }
}

【问题讨论】:

    标签: php arrays json laravel


    【解决方案1】:

    将字符串解码为数组并使用array_chunk 将其拆分。
    不要忘记保存密钥的第三个参数。
    然后使用 array_combine 使数组具有关联性。

    $arr = array_combine(["user_profile", "prev"], array_chunk(json_decode($json, true),22, true));
    var_dump($arr);
    

    返回:

    array(2) {
      ["user_profile"]=>
      array(22) {
        ["email"]=>
        string(19) "shahzad@ovadamd.com"
        ["password"]=>
        string(8) "admin123"
        ["password_confirmation"]=>
        string(8) "admin123"
        ["status"]=>
        int(0)
        ["first_name"]=>
        string(7) "Shahzad"
        ["middle_name"]=>
        string(7) "Hussain"
        ["last_name"]=>
        string(4) "Shah"
        ["date_of_birth"]=>
        string(10) "2015-01-01"
        ["gender"]=>
        string(1) "M"
        ["area_id"]=>
        int(1)
        ["address"]=>
        string(12) "Minhatten NY"
        ["city"]=>
        string(8) "New York"
        ["state"]=>
        string(10) "Washington"
        ["zip"]=>
        string(5) "12312"
        ["fax"]=>
        string(12) "111-111-1111"
        ["phone_extension"]=>
        string(4) "2471"
        ["work_phone"]=>
        string(12) "111-111-1111"
        ["phone_no"]=>
        string(12) "111-111-1111"
        ["emergency_contact"]=>
        string(12) "111-111-1111"
        ["social_security"]=>
        string(11) "111-11-1111"
        ["module_id"]=>
        int(1)
        ["role_id"]=>
        int(1)
      }
      ["prev"]=>
      array(6) {
        ["speciality_id"]=>
        int(1)
        ["facility_id"]=>
        int(1)
        ["priv_title"]=>
        string(15) "can edit doctor"
        ["priv_key"]=>
        string(3) "ced"
        ["display_group"]=>
        string(6) "Doctor"
        ["prev_id"]=>
        int(1)
      }
    }
    

    数组拆分后,您可以使用 json_encode() 轻松地将其再次设为 Json。
    https://3v4l.org/Zp26m

    【讨论】:

    • 我做过类似的事情,请看我的编辑问题。
    • 我不明白该代码与拆分 json 字符串有什么关系。你试过我发布的代码了吗?
    • json_decode() 期望参数 1 是字符串,数组在我尝试你的代码时给出了这个错误
    • 我们可以聊聊吗?
    • 代码专家把$json做成一个json字符串,就是你问题里的那个字符串
    猜你喜欢
    • 2023-02-03
    • 2020-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    • 2011-02-03
    • 2023-01-28
    相关资源
    最近更新 更多