user1468768
user1468768

Reputation: 191

Extracting information from a JSON string from PHP

Following is the JSON output

{
  "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": "[email protected]",
  "priority": "Highest",
  "is_open": true,
  "creator": "[email protected]",
  "target_milestone": "---",
  "creator_detail": {
    "name": "[email protected]",
    "id": 1,
    "real_name": "Ashish Sureka",
    "email": "[email protected]"
  },
  "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": "[email protected]",
    "email": "[email protected]",
    "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": [

 ]
}

of my program

        // 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;

I tried using json_encode and json_decode functions and tried to extract properties from object or get information from array but not able to get the product, component, version, summary, priority etc from the $result

Upvotes: 1

Views: 62

Answers (3)

Remco K.
Remco K.

Reputation: 717

I think you have to look to the structure of the JSON. It is a valid JSON so you can use PHP's function json_decode($result) to parse the JSON into an object.

Then use var_dump() to see a clear overview of the object. There you can see how you can get the information.

Example:

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

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

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

JSON validator: http://jsonlint.com/

Upvotes: 1

Jigar
Jigar

Reputation: 3322

Try this:

<?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":"[email protected]",
         "priority":"Highest",
         "is_open":true,
         "creator":"[email protected]",
         "target_milestone":"---",
         "creator_detail":{
            "name":"[email protected]",
            "id":1,
            "real_name":"Ashish Sureka",
            "email":"[email protected]"
         },
         "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":"[email protected]",
            "email":"[email protected]",
            "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;

Output:

TestProduct
TestComponent
unspecified

Upvotes: 1

Passionate Coder
Passionate Coder

Reputation: 7294

Try this

$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>";

Output

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

In json_decode When TRUE, returned objects will be converted into associative arrays.http://php.net/manual/en/function.json-decode.php

Upvotes: 2

Related Questions