如何从JSON字符串中删除不需要的字符(括号、引号和逗号)?
如何从JSON字符串中删除不需要的字符(括号、引号和逗号)?,json,google-apps-script,google-sheets,Json,Google Apps Script,Google Sheets,我一直在从事一个项目,该项目将能够在谷歌地图上输入一个地点的名称,然后使用地点API和地点详细信息来获取相关信息 我得到的一点信息是开放的营业时间,称为场所。工作日的文本如下: "[ "Monday: 2:00 – 10:00 PM", "Tuesday: 2:00 – 10:00 PM", "Wednesday: 2:00 – 10:00 PM", "Thursday: 2:00 – 10:00 P
我一直在从事一个项目,该项目将能够在谷歌地图上输入一个地点的名称,然后使用地点API和地点详细信息来获取相关信息 我得到的一点信息是开放的营业时间,称为
场所。工作日的文本如下:
"[
"Monday: 2:00 – 10:00 PM",
"Tuesday: 2:00 – 10:00 PM",
"Wednesday: 2:00 – 10:00 PM",
"Thursday: 2:00 – 10:00 PM",
"Friday: 12:00 – 11:00 PM",
"Saturday: 12:00 – 11:00 PM",
"Sunday: 12:00 – 9:00 PM"
]"
我已尝试在stringify结束时使用replace:
JSON.stringify(place.opening_hours.weekday_text, "", 1).replace("[", "").replace("\"", "").replace("\",", "").replace("]", "")
但这最多只涉及周一
有没有办法去掉额外的方括号、逗号和引号,使其返回一个漂亮整洁的版本,如图所示
Saturday 12PM–12AM
Sunday 12–8PM
Monday Closed
Tuesday Closed
Wednesday 3–11PM
Thursday 3–11PM
Friday 3PM–12AM
以下是我的代码的相关部分:
//Gets the Place ID
function COMBINED(text) {
var API_KEY = 'AIzxxxxxxxxxxxxxxxxxxxxxxxxx';
var baseUrl = 'https://maps.googleapis.com/maps/api/place/findplacefromtext/json';
var queryUrl = baseUrl + '?input=' + text + '&inputtype=textquery&key=' + API_KEY + "&locationbias=point:" + LOC_BASIS_LAT_LON;
var response = UrlFetchApp.fetch(queryUrl);
var json = response.getContentText();
var placeId = JSON.parse(json);
var ID = placeId.candidates[0].place_id;
var fields = 'name,formatted_address,formatted_phone_number,website,url,types,opening_hours';
var baseUrl2 = 'https://maps.googleapis.com/maps/api/place/details/json?placeid=';
var queryUrl2 = baseUrl2 + ID + '&fields=' + fields + '&key='+ API_KEY + "&locationbias=point:" + LOC_BASIS_LAT_LON;
if (ID == '') {
return 'Give me a Google Places URL...';
}
var response2 = UrlFetchApp.fetch(queryUrl2);
var json2 = response2.getContentText();
var place = JSON.parse(json2).result;
return [[ place.name,
place.formatted_address,
place.formatted_phone_number,
place.website,
place.url,
//JSON.stringify(place.opening_hours.weekday_text, "", 1).replace("[", "").replace("\"", "").replace("\",", "").replace("]", ""),
]];
}
如果我们在Google表单上输入“Big Alice Brewing”并转到生成的网页,您将看到以下内容
:
更新了仍需要帮助的代码:
var response2 = UrlFetchApp.fetch(queryUrl2);
var json2 = response2.getContentText();
var place = JSON.parse(json2).result;
var placeName = place.name;
var placeAddress = place.formatted_address;
var placePhoneNumber = place.formatted_phone_number;
var placeWebsite = place.website;
var placeURL = place.url;
var weekdayTextList = place.opening_hours.weekday_text;
weekdayTextList.forEach((weekdayText) => {
console.log( weekdayText );
} );
return [[ placeName,
placeAddress,
placePhoneNumber,
placeWebsite,
placeURL
]];
最终更新:这是最后一点帮助后的工作代码。
function writeToSpreadsheet() {
var results = COMBINED2('');
var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(1, 1, 1, 6).setValues(results);
}
function COMBINED2(text) {
var API_KEY = 'AIzcxxxxxxxxxxxxxxxxxxxxxxxxx';
var baseUrl = 'https://maps.googleapis.com/maps/api/place/findplacefromtext/json';
var queryUrl = baseUrl + '?input=' + text + '&inputtype=textquery&key=' + API_KEY + "&locationbias=point:" + LOC_BASIS_LAT_LON;
var response = UrlFetchApp.fetch(queryUrl);
var json = response.getContentText();
var placeId = JSON.parse(json);
var ID = placeId.candidates[0].place_id;
var fields = 'name,formatted_address,formatted_phone_number,website,url,types,opening_hours';
var baseUrl2 = 'https://maps.googleapis.com/maps/api/place/details/json?placeid=';
var queryUrl2 = baseUrl2 + ID + '&fields=' + fields + '&key='+ API_KEY + "&locationbias=point:" + LOC_BASIS_LAT_LON;
if (ID == '') {
return 'Give me a Google Places URL...';
}
var response2 = UrlFetchApp.fetch(queryUrl2);
var json2 = response2.getContentText();
var place = JSON.parse(json2).result;
var placeName = place.name;
var placeAddress = place.formatted_address;
var placePhoneNumber = place.formatted_phone_number;
var placeWebsite = place.website;
var placeURL = place.url;
var weekdays = '';
place.opening_hours.weekday_text.forEach((weekdayText) => {
weekdays += ( weekdayText + '\r\n' );
} );
var data = [ [
place.name,
place.formatted_address,
place.formatted_phone_number,
place.website,
place.url,
weekdays.trim()
] ];
return data;
}
您已经有了字符串中的JSON数据,因此需要将其解析为JavaScript对象(本例中为数组):
这将为您提供一个可以迭代的数据结构,以干净的方式提取每个项
下面是一个演示:
var jsonString='[“周一:下午2:00–10:00”,“周二:下午2:00–10:00”,“周三:下午2:00–10:00”,“周四:下午2:00–10:00”,“周五:下午12:00–11:00”,“周六:下午12:00–11:00”,“周日:下午12:00–9:00”];
var businessHours=JSON.parse(jsonString);
每小时营业时间((工作日)=>{
console.log(bizDay);
} );代码>当前我的代码获取一个地方的URL并解析文本。我需要创建一个新的变量来解析这个特定的元素吗?有趣-保留response2.getContentText()的确切内容可能更容易
并返回它,而不是返回当前返回的内容。但我们需要看看这段文字是什么样子。您是否可以编辑您的问题以将此数据显示为文本?我可以相应地更新我的答案。底线是:应该不需要对那些replace()
函数进行额外的解析。但这完全取决于原始响应的样子。用代码更新了主帖。但是你应该能够从我的谷歌应用程序脚本顶部的链接中查看/编辑我的代码。这是一个名为“COMBINED”的函数对不起,我要找的不是代码,而是JSON文本字符串,我在问题本身中看不到。它可能可以通过链接访问,但我宁愿避免这些。
function writeToSpreadsheet() {
var results = COMBINED2('');
var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(1, 1, 1, 6).setValues(results);
}
function COMBINED2(text) {
var API_KEY = 'AIzcxxxxxxxxxxxxxxxxxxxxxxxxx';
var baseUrl = 'https://maps.googleapis.com/maps/api/place/findplacefromtext/json';
var queryUrl = baseUrl + '?input=' + text + '&inputtype=textquery&key=' + API_KEY + "&locationbias=point:" + LOC_BASIS_LAT_LON;
var response = UrlFetchApp.fetch(queryUrl);
var json = response.getContentText();
var placeId = JSON.parse(json);
var ID = placeId.candidates[0].place_id;
var fields = 'name,formatted_address,formatted_phone_number,website,url,types,opening_hours';
var baseUrl2 = 'https://maps.googleapis.com/maps/api/place/details/json?placeid=';
var queryUrl2 = baseUrl2 + ID + '&fields=' + fields + '&key='+ API_KEY + "&locationbias=point:" + LOC_BASIS_LAT_LON;
if (ID == '') {
return 'Give me a Google Places URL...';
}
var response2 = UrlFetchApp.fetch(queryUrl2);
var json2 = response2.getContentText();
var place = JSON.parse(json2).result;
var placeName = place.name;
var placeAddress = place.formatted_address;
var placePhoneNumber = place.formatted_phone_number;
var placeWebsite = place.website;
var placeURL = place.url;
var weekdays = '';
place.opening_hours.weekday_text.forEach((weekdayText) => {
weekdays += ( weekdayText + '\r\n' );
} );
var data = [ [
place.name,
place.formatted_address,
place.formatted_phone_number,
place.website,
place.url,
weekdays.trim()
] ];
return data;
}
JSON.parse(jsonString)