php - 在 PHP 上解析 JSON 并提取特定值

标签 php mysql json parsing logic

目标:解析后面的json字符串并分别获取提到的值,稍后这些分开的值将被插入到 mysql 数据库。
我已经在 JsonLint 上检查了我的 json 字符串

  1. 用户名,
  2. 选择日期,
  3. 选定的项目,
  4. 任务,4.1.task_name,4.2 work_hours

    {
    "user_name": "USER",
    "selected_date": "2015-06-08",
    "selected_project": "Project1",
    "tasks": [
        {
            "task_name": "task-1",
            "work_hours": [
                {
                "Monday": " 3"
                },
                {
                "Tuesday": " 0"
                },
                {
                "Wednesday": " 2.5"
                },
                {
                "Thursday": " 2"
                },
                {
                "Friday": " 0"
                },
                {
                "Saturday": " 0"
                },
                {
                "Sunday": " 0"
                }
            ]
        }
    ] 
    }
    

    PHP 代码是:

    $str_json = file_get_contents('php://input'); //($_POST doesn't work here)
    $response = json_decode($str_json, true); // decoding received JSON to array
    $jsonIterator = new RecursiveIteratorIterator(
    new RecursiveArrayIterator(json_decode($response, TRUE)),
    RecursiveIteratorIterator::SELF_FIRST);
    foreach ($jsonIterator as $key => $val) 
    {
     if(is_array($val)) 
     {
       echo "$key:\n";
     } 
     else 
     {
       echo "$key => $val\n";
       echo "$value";
     }
    }
    

由于我是 JSON 和 PHP 的新手,我无法解决这个问题,我们将不胜感激。

最佳答案

    <?
$json = '{
"user_name": "USER",
"selected_date": "2015-06-08",
"selected_project": "Project1",
"tasks": [
    {
        "task_name": "task-1",
        "work_hours": [
            {
            "Monday": " 3"
            },
            {
            "Tuesday": " 0"
            },
            {
            "Wednesday": " 2.5"
            },
            {
            "Thursday": " 2"
            },
            {
            "Friday": " 0"
            },
            {
            "Saturday": " 0"
            },
            {
            "Sunday": " 0"
            }
        ]
    }
] 
}';

// decode your json  into associative arrays
$decoded = json_decode($json, true);

// use array
echo "Username: ". $decoded['user_name'] . "<br>";
echo "Date: ". $decoded['selected_date'] . "<br>";
echo "project: ". $decoded['selected_project'] . "<br>";
echo "Task: ". $decoded['tasks'][0]['task_name'] . "<br>";

foreach($decoded['tasks'][0]['work_hours'] as $key => $value) {
    foreach($value as $key2 => $value2){
        echo $key2 . ": ". $value2 . "<br>";
    }
}
?>

关于php - 在 PHP 上解析 JSON 并提取特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30849896/

相关文章:

php - 如何通过 laravel 迁移将日期间隔存储到 MySQL 中?

php - 在网页上显示服务器状态(打开或关闭)

python - Mysql数据库无法连接到python

python - 使用 Flask-Restful 的字段,如何获得 "catchall"字段?

javascript - 读取JQuery中的Json字段

php - 通知 : Uninitialized string offset in PHP

php - 在 php 中实时记录表之间的移动

mysql - 拒绝mysql中的某些查询

mysql - 不同 VPC 上的 AWS RDS 只读副本

php条件从json数据中过滤结果