从PHP中提取JSON字符串中的信息

时间:2016-09-13 07:03:22

标签: php json

以下是JSON输出

{
  "bugs": [
{
  "is_confirmed": true,
  "cc": [

  ],
  "deadline": null,
  "qa_contact": "",
  "last_change_time": "2016-09-12T04:57:53Z",
  "creation_time": "2016-09-12T04:57:03Z",
  "keywords": [

  ],
  "classification": "Unclassified",
  "assigned_to": "ashish.sureka@in.abb.com",
  "priority": "Highest",
  "is_open": true,
  "creator": "ashish.sureka@in.abb.com",
  "target_milestone": "---",
  "creator_detail": {
    "name": "ashish.sureka@in.abb.com",
    "id": 1,
    "real_name": "Ashish Sureka",
    "email": "ashish.sureka@in.abb.com"
  },
  "is_cc_accessible": true,
  "op_sys": "Windows",
  "component": "TestComponent",
  "status": "CONFIRMED",
  "resolution": "",
  "platform": "PC",
  "depends_on": [

  ],
  "groups": [

  ],
  "summary": "Checking if Bugzilla REST API is working or not",
  "cc_detail": [

  ],
  "assigned_to_detail": {
    "name": "ashish.sureka@in.abb.com",
    "email": "ashish.sureka@in.abb.com",
    "id": 1,
    "real_name": "Ashish Sureka"
  },
  "alias": [

  ],
  "whiteboard": "",
  "version": "unspecified",
  "url": "",
  "see_also": [

  ],
  "id": 1,
  "dupe_of": null,
  "severity": "critical",
  "product": "TestProduct",
  "blocks": [

  ],
  "is_creator_accessible": true,
  "flags": [

  ]
}
],
 "faults": [

 ]
}

我的计划

        // Location of the resource (Bug Report)
        $url = "http://localhost:8080/bugzilla/rest/bug/1";

        // Instantiate an instance of cURL
        $curl = curl_init();

        // cURL settings, URL to send request to
        curl_setopt($curl, CURLOPT_URL, $url);

        // cURL settings, Return the response as a string 
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

        // Execute the cURL request
        $result = curl_exec($curl);

        // Close the cURL request
        curl_close($curl);

        //echo "<BR>Product: ". $result->product;
        //echo "<BR>Component: ".$result->component;
        //echo "<BR>Version: ".$result->version;
        //echo "<BR>Summary: ".$result->summary;
        //echo "<BR>Priority: ".$result->priority;
        //echo "<BR>Operating System".$result->op_sys;

我尝试使用json_encodejson_decode函数,并尝试从对象中提取属性或从数组中获取信息,但无法从{{获取产品,组件,版本,摘要,优先级等1}}

3 个答案:

答案 0 :(得分:2)

试试这个

$data = json_decode('your json_code',true);
echo $data['bugs'][0]['component']."<br>";
echo $data['bugs'][0]['product']."<br>";
echo $data['bugs'][0]['version']."<br>";
echo $data['bugs'][0]['summary']."<br>";

输出

TestComponent
TestProduct
unspecified
Checking if Bugzilla REST API is working or not

json_decode TRUE时,返回的objects将转换为associative arrayshttp://php.net/manual/en/function.json-decode.php

答案 1 :(得分:1)

试试这个:

<?php 

$str = '{
   "bugs":[
      {
         "is_confirmed":true,
         "cc":[

         ],
         "deadline":null,
         "qa_contact":"",
         "last_change_time":"2016-09-12T04:57:53Z",
         "creation_time":"2016-09-12T04:57:03Z",
         "keywords":[

         ],
         "classification":"Unclassified",
         "assigned_to":"ashish.sureka@in.abb.com",
         "priority":"Highest",
         "is_open":true,
         "creator":"ashish.sureka@in.abb.com",
         "target_milestone":"---",
         "creator_detail":{
            "name":"ashish.sureka@in.abb.com",
            "id":1,
            "real_name":"Ashish Sureka",
            "email":"ashish.sureka@in.abb.com"
         },
         "is_cc_accessible":true,
         "op_sys":"Windows",
         "component":"TestComponent",
         "status":"CONFIRMED",
         "resolution":"",
         "platform":"PC",
         "depends_on":[

         ],
         "groups":[

         ],
         "summary":"Checking if Bugzilla REST API is working or not",
         "cc_detail":[

         ],
         "assigned_to_detail":{
            "name":"ashish.sureka@in.abb.com",
            "email":"ashish.sureka@in.abb.com",
            "id":1,
            "real_name":"Ashish Sureka"
         },
         "alias":[

         ],
         "whiteboard":"",
         "version":"unspecified",
         "url":"",
         "see_also":[

         ],
         "id":1,
         "dupe_of":null,
         "severity":"critical",
         "product":"TestProduct",
         "blocks":[

         ],
         "is_creator_accessible":true,
         "flags":[

         ]
      }
   ],
   "faults":[

   ]
}';

$result = json_decode($str);

echo $result->bugs[0]->product;
echo PHP_EOL;
echo $result->bugs[0]->component;
echo PHP_EOL;
echo $result->bugs[0]->version;

输出:

TestProduct
TestComponent
unspecified

答案 2 :(得分:1)

我认为您必须关注JSON的结构。它是一个有效的JSON,因此您可以使用PHP的函数 json_decode($ result)将JSON解析为对象。

然后使用 var_dump()查看对象的清晰概述。在那里,您可以看到如何获取信息。

示例:

$result = json_decode($result);
var_dump($result);

//Product:
$result->bugs[0]->product;

//Component:
$result->bugs[0]->component;

JSON验证器: http://jsonlint.com/