duanchun6148
2016-09-13 07:03
浏览 294
已采纳

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

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": "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": [

 ]
}

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

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • dpnfxk251524 2016-09-13 07:10
    已采纳

    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

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • dream2891 2016-09-13 07:12

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

    Output:

    TestProduct
    TestComponent
    unspecified
    
    评论
    解决 无用
    打赏 举报
  • duanlai1855 2016-09-13 07:16

    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/

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题