当前位置: 首页 > 面试题库 >

在PHP中访问JSON对象元素

高宸
2023-03-14
问题内容

我有一个要从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

如果您选择省略第二个布尔参数,那么您将获得一个stdClass,$jsonDecoded->USER;它将为您服务



 类似资料:
  • 问题内容: 我有以下JSON: 我拼命尝试访问动态对象名称,如,该怎么办? 现在我有: 问题答案: 我可以想象,最简单的方法是解码为关联数组而不是stdClass对象

  • 通过触发这个Webhook,我收到一个订单对象,当我在电子邮件中输出它时,它如下所示: 数组{“id”:1154,“parent_id”:0,“status”:“pending”,“currency”:“eur”,“version”:“3.2.3”,“prices_include_tax”:true,“date_created”:{“date”:“2017-12-15 15:58:42.00000

  • 我正在尝试填充一个jList,我希望它显示一个名称,但也为列表中的每个项目存储一个ID(未显示)。 干杯。

  • 可能的重复: 我有一个嵌套的数据结构/JSON,我如何访问一个特定的值? 我有一个json对象,如下所示:

  • 问题内容: 我正在从URL获取天气信息。 我得到的是: 如何访问所需的任何元素? 如果我这样做:我收到错误消息: 字符串索引必须是整数,而不是str。 问题答案: 您从url中获得的是一个json字符串。而且您不能直接用索引解析它。您应该将其转换为dict ,然后可以使用index对其进行解析。 与其使用中间方式将其保存到内存,然后将其读取为,不如直接从文件中加载它:

  • 可以使用点号(.),或中括号([])来访问 JSON 对象的值。 使用点号访问对象时,直接使用对象的 key 来访问, key 无须放在双引号中。如: <script>   var myObj, x;   myObj = { "github": "https://github.com/leiqikui" };   x = myObj.github;   document.write(x); </