如何解析PHP中的Azure搜索响应?

时间:2014-11-17 12:16:27

标签: php rest azure azure-search

目前我尝试Azure搜索。

我设法在索引中插入文档,现在我想解析我的结果。

我的代码如下所示:

<?php
$url ="";
   $url .="https://mywebsite.search.windows.net/indexes/test/docs";
   $url .= "?search=";
   $url .= $keyword;
   $url .= "&api-version=2014-07-31-Preview";
   print $url;


   $ch = curl_init();
   curl_setopt($ch, CURLOPT_URL,$url);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt($ch, CURLOPT_TIMEOUT, 60);
   curl_setopt($ch, CURLOPT_HTTPHEADER, array(
           'api-key: mytoken',
           'Accept: application/json',
     ));

   $data = curl_exec($ch);

   if (curl_errno($ch)) {
   print "Error: " . curl_error($ch);
   } else 
   {
   // Show me the result
   print var_dump($data);
   curl_close($ch);
   }
?>

我的程序运行正常,但我无法解析看起来像这样的结果:

  

的字符串(633)   &#34; {&#34; @ odata.context&#34;:&#34; https://mywebsite.search.windows.net/indexes(&#39; adventurehotel&#39;)/ $元数据#文档(hotelId,baseRate,描述,hotelName,类别,标签,parkingIncluded,smokingAllowed,lastRenovationDate,等级,位置)&#34;&#34;值&#34;:[{&#34; @ search.score&#34;:0.16137227,&#34; hotelId&# 34;:&#34; 1&#34;&#34; baseRate&#34;:199.0&#34;描述&#34;:&#34;最佳   镇上的酒店&#34;,&#34; hotelName&#34;:&#34; Fancy   留&#34;&#34;类别&#34;:&#34;豪华&#34;&#34;标记&#34;:[&#34;池&#34;&#34;视图&#34; &#34;无线&#34;&#34;门房&#34],&#34; parkingIncluded&#34;:假,&#34; smokingAllowed&#34;:假,&#34; lastRenovationDate&#34; :&#34; 2010-06-27T00:00:00Z&#34;&#34;评价&#34;:5,&#34;位置&#34; {&#34;类型&#34;:&# 34;点&#34;&#34;坐标&#34;:[ - 122.131577,47.678581]&#34; CRS&#34; {&#34;类型&#34;:&#34;名称&#34; &#34;属性&#34; {&#34;名称&#34;:&#34; EPSG:4326&#34;}}}}]}&#34;

提前致谢。

1 个答案:

答案 0 :(得分:1)

只需 json_decode ,它只是一个 json 字符串。

json_decode,如果使用true作为第二个参数调用,则会为您提供要解析的字符串的关联array表示形式。字符串本身应该是有效的json字符串,否则您将获得null作为函数结果。

注意,从php 5.5及更高版本开始,由于其许可证,json扩展应该与主php安装分开安装。