我想用邮递员拆分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);
}
}
答案 0 :(得分:0)
将字符串解码为数组,然后使用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