使用REST GET进行JSON响应 - PHP

时间:2016-08-05 06:59:12

标签: php json rest curl

我正在使用cURL和REST来访问数据库和查询搜索,当我使用echo $response时,我收到以下响应:

HTTP/1.1 200 OK Date: Fri, 05 Aug 2016 06:53:02 GMT Server: Apache Content-Language: en-US RNT-Time: D=58292 t=1470379982660626 RNT-Machine: 128.65 Transfer-Encoding: chunked Content-Type: application/json { "items": [ { "tableName": "Country", "count": 1, "columnNames": [ "id" ], "rows": [ [ "12" ] ] } ], "links": [ { "rel": "self", "href": "https://test.cust.com/services/rest/connect/v1.3/queryResults?query=select%20ID%20from%20CO.Country%20where%20CO.Country.Country=%27USA%27" }, { "rel": "canonical", "href": "https://test.cust.com/services/rest/connect/v1.3/queryResults" }, { "rel": "describedby", "href": "https://test.cust.com/services/rest/connect/v1.3/metadata-catalog/queryResults", "mediaType": "application/schema+json" } ] } 

我尝试使用JSON_decode()但到目前为止我无处可去,我怎么能在这里得到我的参数?更具体地说," id"值。

5 个答案:

答案 0 :(得分:1)

如果我找到你,你有两个选择:

  • 关闭接收标头curl_setopt($ch, CURLOPT_HEADER, 0)
  • \r\n\r\n打破您的回复,您将获得headerbody
list($header, $body) = explode("\r\n\r\n", $response, 2)

答案 1 :(得分:1)

此处发布的响应似乎是发送到客户端浏览器的服务器响应,

所以,您几乎没有解析此数据的选项

  1. 如果必须使用PHP解析此响应,那么您可以尝试使用PHP中的parse_str()解析数据。

    if (FALSE !== (stripos($response, '{'))) {
    
    $data = trim(substr($response, stripos($response, '{')));
    
        $data_arr = array();
    
        parse_str($data, $data_arr);
    
        print_R($data_arr);
    
        //Digging down using parse_str() in php
    
    } else {
    
        echo "No data found.";
    }
    
  2. 使用客户端javascript / jquery / client端脚本从浏览器的响应中解析json。

  3. Returning header as array using Curl

答案 2 :(得分:0)

您不需要使用JSON_decode()。

使用:

$obj = $_POST['items']; // for post

获取:

$obj = $_GET['items']; 

答案 3 :(得分:0)

在@evilive的帮助下,我能够让它发挥作用:

接收标题的1个回合curl_setopt($ ch,CURLOPT_HEADER,0)

2- $test=$res->items[0]->rows[0];    echo $test[0];

答案 4 :(得分:-2)

$response;//Suppose your respond is this.

$obj = json_decode($response);

然后您可以访问您的参数。 例:     $ obj->项目