Неполадка при разборе данных JSON Google Place - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь получить рейтинг на месте от Google.Я делаю JSON-запрос по placeID, запрашивая имя поля и рейтинг.Когда я просматриваю URL JSON в своем браузере, я вижу следующие данные:

{
   "html_attributions" : [],
   "result" : {
      "name" : "Coffeetots Play Café",
      "rating" : 4.7
   },
   "status" : "OK"
}

Я застреваю при попытке сохранить поле «рейтинг» в качестве переменной в javascript / jQuery или отобразить егона странице.Мой код ниже (удалил мой ключ API), я предполагаю, что мне не нужен цикл «каждый», потому что есть только одно место, но я не нашел другого способа сделать это.

<div id="results"></div>

<script type="text/javascript">
$.getJSON("https://maps.googleapis.com/maps/api/place/details/json?placeid=ChIJgRUw-0_dekgRWCHhui-rPBg&fields=name,rating&key=XXX", function(json){
  $.each(json.results, function(i, place){
    myRating = place.rating;
    $("#results").append('<p>'+myRating+'</p>');
  });
});
</script>

Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Глядя на результаты примера, вы получаете массив, который не похож на ваш пример.

Это работает, используя пример Google, найденный здесь: https://developers.google.com/places/web-service/search

var json = {
   "html_attributions" : [],
   "next_page_token" : "CpQCAgEAAFxg8o-eU7_uKn7Yqjana-HQIx1hr5BrT4zBaEko29ANsXtp9mrqN0yrKWhf-y2PUpHRLQb1GT-mtxNcXou8TwkXhi1Jbk-ReY7oulyuvKSQrw1lgJElggGlo0d6indiH1U-tDwquw4tU_UXoQ_sj8OBo8XBUuWjuuFShqmLMP-0W59Vr6CaXdLrF8M3wFR4dUUhSf5UC4QCLaOMVP92lyh0OdtF_m_9Dt7lz-Wniod9zDrHeDsz_by570K3jL1VuDKTl_U1cJ0mzz_zDHGfOUf7VU1kVIs1WnM9SGvnm8YZURLTtMLMWx8-doGUE56Af_VfKjGDYW361OOIj9GmkyCFtaoCmTMIr5kgyeUSnB-IEhDlzujVrV6O9Mt7N4DagR6RGhT3g1viYLS4kO5YindU6dm3GIof1Q",
   "results" : [
      {
         "geometry" : {
            "location" : {
               "lat" : -33.867217,
               "lng" : 151.195939
            }
         },
         "icon" : "http://maps.gstatic.com/mapfiles/place_api/icons/cafe-71.png",
         "id" : "7eaf747a3f6dc078868cd65efc8d3bc62fff77d7",
         "name" : "Biaggio Cafe - Pyrmont",
         "opening_hours" : {
            "open_now" : true
         },
         "photos" : [
            {
               "height" : 600,
               "html_attributions" : [],
               "photo_reference" : "CnRnAAAAmWmj0BqA0Jorm1_vjAvx1n6c7ZNBxyY-U9x99-oNyOxvMjDlo2npJzyIq7c3EK1YyoNXdMFDcRPzwLJtBzXAwCUFDGo_RtLRGBPJTA2CoerPdC5yvT2SjfDwH4bFf5MrznB0_YWa4Y2Qo7ABtAxgeBIQv46sGBwVNJQDI36Wd3PFYBoUTlVXa0wn-zRITjGp0zLEBh8oIBE",
               "width" : 900
            }
         ],
         "place_id" : "ChIJIfBAsjeuEmsRdgu9Pl1Ps48",
         "scope" : "GOOGLE",
         "price_level" : 1,
         "rating" : 3.4,
         "reference" : "CoQBeAAAAGu0wNJjuZ40DMrRe3mpn7fhlfIK1mf_ce5hgkhfM79u-lqy0G2mnmcueTq2JGWu9wsgS1ctZDHTY_pcqFFJyQNV2P-kdhoRIeYRHeDfbWtIwr3RgFf2zzFBXHgNjSq-PSzX_OU6OT2_3dzdhhpV-bPezomtrarW4DsGl9uh773yEhDJT6R3V8Fyvl_xeE761DTCGhT1jJ3floFI5_c-bHgGLVwH1g-cbQ",
         "types" : [ "cafe", "bar", "restaurant", "food", "establishment" ],
         "vicinity" : "48 Pirrama Rd, Pyrmont"
      },
      {
         "geometry" : {
            "location" : {
               "lat" : -33.866786,
               "lng" : 151.195633
            }
         },
         "icon" : "http://maps.gstatic.com/mapfiles/place_api/icons/generic_business-71.png",
         "id" : "3ef986cd56bb3408bc1cf394f3dad9657c1d30f6",
         "name" : "Doltone House",
         "photos" : [
            {
               "height" : 1260,
               "html_attributions" : [ "From a Google User" ],
               "photo_reference" : "CnRwAAAAeM-aLqAm573T44qnNe8bGMkr_BOh1MOVQaA9CCggqtTwuGD1rjsviMyueX_G4-mabgH41Vpr8L27sh-VfZZ8TNCI4FyBiGk0P4fPxjb5Z1LrBZScYzM1glRxR-YjeHd2PWVEqB9cKZB349QqQveJLRIQYKq2PNlOM0toJocR5b_oYRoUYIipdBjMfdUyJN4MZUmhCsTMQwg",
               "width" : 1890
            }
         ],
         "place_id" : "ChIJ5xQ7szeuEmsRs6Kj7YFZE9k",
         "scope" : "GOOGLE",
         "reference" : "CnRvAAAA22k1PAGyDxAgHZk6ErHh_h_mLUK_8XNFLvixPJHXRbCzg-gw1ZxdqUwA_8EseDuEZKolBs82orIQH4m6-afDZV9VcpggokHD9x7HdMi9TnJDmGb9Bdh8f-Od4DK0fASNBL7Me3CsAWkUMWhlNQNYExIQ05W7VbxDTQe2Kh9TiL840hoUZfiO0q2HgDHSUyRdvTQx5Rs2SBU",
         "types" : [ "food", "establishment" ],
         "vicinity" : "48 Pirrama Rd, Pyrmont"
      }
   ],
   "status" : "OK"
}

 $.each(json.results, function(i, place){
    myRating = place.rating || "not rated"
    $("#results").append('<p>'+i+':'+' '+place.name+' '+myRating+'</p>');
  });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="results"></div>

Если вы позвоните по ID, вы получите его обратно в соответствии с https://developers.google.com/places/web-service/place-id

var json =     {
      "html_attributions" : [],
      "results" : [
        {
          "geometry" : {
            "location" : {
              "lat" : -33.870775,
              "lng" : 151.199025
            }
          },
          "place_id" : "ChIJrTLr-GyuEmsRBfy61i59si0",
          "name": "Somewhere",
          "rating": 4.5
        }
      ],
      "status" : "OK"
    }


 $.each(json.results, function(i, place){
    myRating = place.rating || "not rated"
    $("#results").append('<p>'+i+':'+' '+place.name+' '+myRating+'</p>');
  });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="results"></div>

Если вы действительно получаете объект, который вы показываете, то вы не можете использовать каждый из них:

var json =    {
   "html_attributions" : [],
   "result" : {
      "name" : "Coffeetots Play Café",
      "rating" : 4.7
   },
   "status" : "OK"
}


 myRating = json.result.rating || "not rated";
 $("#results").append('<p>'+json.result.name+' '+myRating+'</p>');
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="results"></div>
0 голосов
/ 23 января 2019

Вы должны использовать json.result вместо json.results в соответствии с JSON, который вы указали в вопросе.

{
   "html_attributions" : [],
   "result" : {
      "name" : "Coffeetots Play Café",
      "rating" : 4.7
   },
   "status" : "OK"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...