google 放置api returns 一个字符串,如何解析为JSON 对象?

google places api returns a string, how do I parse to JSON object?

在我尝试设置的小型网店中,我需要在后台使用 firebase 函数更新营业时间,并在用户创建购物车时 google 地点详细信息。

我可以使用以下说明成功地使用 POSTMAN 发送 GET 请求以检索商店的营业时间: https://developers.google.com/places/web-service/details

但是我无法像通常处理 JSON 响应那样访问 GET 请求的响应。

我也试过了:response.result.opening_hours.json()

谁能告诉我我做错了什么?

export const mapGooglePlaces = functions.database
.ref('/shopping-carts/{shoppingCartId}/shippingManner')
.onWrite(event => {
    const shippingManner = event.data.val();

    const optionsAPI = {
        method: 'GET',
        uri: 'https://maps.googleapis.com/maps/api/place/details/json?placeid=ChIJN1t_tDeuEmsRUsoyG83frY4&key=YOUR_API_KEY',
    };

    return request(optionsAPI)
        .then(response => {
            const openingHours = response.result.opening_hours;
            console.log(openingHours);
            return;
        })
        .catch(function (err) {
            console.log(err);
        });
});

响应不是 JSON 对象。它是 JSON 格式的文本,必须经过解析才能创建一个对象。修改代码如下:

return request(optionsAPI)
    .then(response => {
        const responseObject = JSON.parse(response);
        const openingHours = responseObject.result.opening_hours;
        console.log(openingHours);
        return;
    })
    .catch(function (err) {
        console.log(err);
    });

此外,在使用 opening_hoursresult 的任何其他 属性 之前,您应该测试 responseObject.status === 'OK'confirm that a place was found 并且至少有一个结果是返回。