2016-08-05 157 views
0

我使用卷曲和REST访问数据库和查询搜索,我得到如下回应当我使用echo $responseJSON响应 - PHP

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”值。

+0

你在客户端还是服务器?即请求是从客户端到服务器 - 服务器还是服务器? –

+0

@GoldunoSupport客户端服务器 – Zame

+0

请求是通过ajax?如果使用\t data = JSON.parse(data);数据是来自服务器的响应。 –

回答

1

如果我得到你的权利,你有两个选择:

  • 关闭接收头curl_setopt($ch, CURLOPT_HEADER, 0)
  • 打破你的回应通过\r\n\r\n,你会得到headerbody
list($header, $body) = explode("\r\n\r\n", $response, 2) 
+0

通过删除标题帮助我了很多,现在我得到了完整的JSON响应,我添加了:'$ test = $ res-> items [0] - > rows [0]; echo $ test [0];' 我得到了行值,谢谢 – Zame

-2
$response;//Suppose your respond is this. 

$obj = json_decode($response); 

然后你可以访问你的参数。例如: $ obj-> items

0

您不需要使用JSON_decode()。

用途:

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

对于GET:

$obj = $_GET['items']; 
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的/客户端脚本从浏览器响应解析JSON。

  3. Returning header as array using Curl
+0

好吧,我得到了'Array([{____“items”:_] => Array([{“tableName”:“CO.Country”,“ count“:1,”columnNames“:[”id“] =>从CO.Country中选择ID,其中CO.Country。Country ='USA'“},{”rel“:”canonical“,”href“:”https://test.cust.com/services/rest/connect/v1.3/queryResults“},{”rel“ :“describeby”,“href”:“https://test.cust.com/services/rest/connect/v1.3/metadata-catalog/queryResults”,“mediaType”:“application/schema json”}]} ))' 我现在怎么能得到id属性? – Zame

+0

然后你需要挖掘dipper并迭代响应数据。 –

0

随着@evilive的帮助下,我能得到它的工作:接收头curl_setopt的

1圈($ CH,CURLOPT_HEADER,0)

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