php - JSON 使用 PHP 获取动态变化的键名
问题描述
我无法从 JSON 字符串中获取动态键的名称。我正在使用 PHP
这是 JSON 的示例
{
"_text": "this is a test",
"entities": {
"dynamic_key": [
{
"confidence": 0.99,
"value": "thi is the answer"
}
]
},
"msg_id": "1234532123"
}
我正在使用 foreach 遍历 json 键并获取值
foreach ($json as $obj) {
$search_term = $obj->_text;
$msg_id = $obj->msg_id;
}
但我不知道如何获得每次都会改变的“dynamic_key”的值,因此我也无法获得“信心和价值”键的值。
关于如何解决这个问题的任何想法?
跟随@Dimi,解决方案。这就是我最终得到的
$data=json_decode($json,true);
foreach ($data['entities'] as $key=>$val)
{
echo "Entity: $key";
foreach ($data['entities'] as $keys){
$conf = $keys[0]['confidence'];
$answer = $keys[0]['value'];
echo "conf: $conf, answ: $answer";
}
}
解决方案
使用您显示的数据,似乎没有用于起始 JSON 的数组。
但是使用该数据,以下内容将用于foreach
获取键和数据,然后是另一个子循环来获取confidence
值...
$search_term = $json->_text;
$msg_id = $json->msg_id;
foreach ( $json->entities as $key => $entities ) {
echo $key.PHP_EOL;
foreach ( $entities as $entity) {
echo $entity->confidence.PHP_EOL;
}
}
推荐阅读
- git - 如何查看 git merge 在提交之前做了什么?
- r - 使用组第一行的值为每个组创建新行
- node.js - 使用 node.js 构建一个安静的 api 后端 - 问题如何以及从哪里开始
- javascript - 将重新渲染限制为功能组件中的特定状态更改
- java - 使用 TLSv1.2 从 java 连接到 cloudant
- javascript - 如何使用客户端 ID 和客户端密码在 Javascript 中获取 API?
- linux - FileNotFoundError: [Errno 2] 将启动画面推送到 heroku 后
- python - 忽略大小写删除重复记录
- prolog - Prolog:创建另一个列表的频率列表
- android - 相机预览出现拉伸