我有一个要从ExtJS界面发布到PHP的JSON对象。我从那里得到物体
$json = $_POST["newUserInfo"];
该对象将包含3个数组,我可以查看是否
var_dump(json_decode($json));
我需要获取每个数组并从中构建SQL查询。我的第一个障碍是将数组移出对象,尽管这可能是不必要的。这是我正在使用的代码块:
/*Variable passed in from the ExtJS interface as JSON object*/ $json = $_POST["newUserInfo"]; //$json = '{"USER":{"ID":"","FULL_USER_NAME":"Some Guy","ENTERPRISE_USER_NAME":"guyso01","USER_EMAIL":"Some.Guy@Email.com","USER_PHONE":"123-456-7890"},"PERMISSIONS":{"ID":"","USER_ID":"","IS_ADMIN":"true"},"SETTINGS":{"ID":"","USERS_ID":"","BACKGROUND":"default"}}'; //Test to view the decoded output //var_dump(json_decode($json)); //Decode the $json variable $jsonDecoded = json_decode($json,true); //Create arrays for each table from the $jsonDecoded object $user_info = array($jsonDecoded['USER']); $permissions_info = array($jsonDecoded['PERMISSIONS']); $settings_info = array($jsonDecoded['SETTINGS']);
我没有正确创建数组。我也尝试过
$user_info = $jsonDecoded->USER;
那也不行。我确定我在这里容易错过一些事情。同样,这可能是不必要的,因为我可能可以直接访问它们。我需要通过遍历数组并将每个键附加到字符串和每个值附加到字符串来构建查询。所以我最终会得到类似
$query = "INSERT INTO USERS ($keyString) VALUES ($valueString);
然后,我对PERMISSIONS和SETTINGS数组重复相同的过程。这可能很简单,但我被困在这里。
如果您使用的json_decode($json,true);是-true表示将js对象的结果作为关联数组返回-那么您所要做的就是$user_info = $jsonDecoded['USER'];没有array()强制转换的原因json_decode。
json_decode($json,true);
$user_info = $jsonDecoded['USER'];
array()
json_decode
如果您选择省略第二个布尔参数,那么您将获得一个stdClass,$jsonDecoded->USER;它将为您服务
$jsonDecoded->USER;