首页 > 解决方案 > 如何在php中从json bing响应中获取特定的节点值

问题描述

我正在尝试使用 bing 搜索 API,我得到了 JSON 格式的结果,现在我想从该 JSON 结果中获取特定的节点值,例如(url、displayurl、snippet 等)。

这是我得到的 JSON 结果格式

JSON响应:

{
  "_type": "SearchResponse",
  "queryContext": {
    "originalQuery": "infokart India Pvt. Ltd."
  },
  "webPages": {
    "webSearchUrl": "https://www.bing.com/search?q=infokart+India+Pvt.+Ltd.",
    "totalEstimatedMatches": 12200000,
    "value": [
      {
        "id": "https://api.cognitive.microsoft.com/api/v7/#WebPages.0",
        "name": "Infokart India Pvt. Ltd.",
        "url": "http://infokartindia.com/",
        "isFamilyFriendly": true,
        "displayUrl": "infokartindia.com",
        "snippet": "Journals Subscription Services,International Subscription Agency,Experiences subscription agency",
        "dateLastCrawled": "2018-07-24T11:49:00.0000000Z",
        "language": "en"
      }
    ]
  },
  "rankingResponse": {
    "mainline": {
      "items": [
        {
          "answerType": "WebPages",
          "resultIndex": 0,
          "value": {
            "id": "https://api.cognitive.microsoft.com/api/v7/#WebPages.0"
          }
        }
      ]
    }
  }
}

请推荐!!

标签: phpjsonbingbing-api

解决方案


<?php 

$json = '{"_type":"SearchResponse","queryContext":{"originalQuery":"infokart India Pvt. Ltd."},"webPages":{"webSearchUrl":"https://www.bing.com/search?q=infokart+India+Pvt.+Ltd.","totalEstimatedMatches":12200000,"value":[{"id":"https://api.cognitive.microsoft.com/api/v7/#WebPages.0","name":"Infokart India Pvt. Ltd.","url":"http://infokartindia.com/","isFamilyFriendly":true,"displayUrl":"infokartindia.com","snippet":"Journals Subscription Services,International Subscription Agency,Experiences subscription agency","dateLastCrawled":"2018-07-24T11:49:00.0000000Z","language":"en"}]},"rankingResponse":{"mainline":{"items":[{"answerType":"WebPages","resultIndex":0,"value":{"id":"https://api.cognitive.microsoft.com/api/v7/#WebPages.0"}}]}}}';

$json_data = json_decode($json,true);

foreach($json_data['webPages']['value'] as $each_data){
    foreach($each_data as $each_key => $each_value){
        if(in_array(strtolower($each_key),['url','displayurl','snippet'])){
            echo $each_key," => ",$each_value,"<br/>";
        }
    }
}

输出

url => http://infokartindia.com/
displayUrl => infokartindia.com
snippet => Journals Subscription Services,International Subscription Agency,Experiences subscription agency

推荐阅读