【问题标题】:How to parse Azure Search response in PHP?如何在 PHP 中解析 A​​zure 搜索响应?
【发布时间】:2014-11-17 21:02:23
【问题描述】:

目前我尝试使用 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) "{"@odata.context":"https://mywebsite.search.windows.net/indexes('adventurehotel')/$metadata#docs(hotelId,baseRate,description,hotelName,category,tags,parkingIncluded,SmokingAllowed,lastRenovationDate,rating,location)","value ":[{"@search.score":0.16137227,"hotelId":"1","baseRate":199.0,"description":"最佳 镇上的酒店","hotelName":"花式 住宿","类别":"豪华","标签":["泳池","景观","wifi","礼宾服务"],"parkingIncluded":false,"吸烟允许":false,"lastRenovationDate":" 2010-06-27T00:00:00Z","rating":5,"location":{"type":"Point","coordinates":[-122.131577,47.678581],"crs":{"type": "名称","属性":{"名称":"EPSG:4326"}}}}]}"

提前致谢。

【问题讨论】:

  • 您最初是如何对数据进行编码的?看起来像一个 JSON 字符串
  • json_decode吧。

标签: php rest azure azure-cognitive-search


【解决方案1】:

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

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

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

【讨论】:

  • 感谢您的回答。如果有人想对其进行解码,请按照以下示例进行操作: $json_decoded = json_decode($data, true);打印 $json_decoded['value']['0']['category'];
猜你喜欢
  • 2018-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-08
  • 2014-07-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多