【发布时间】:2017-10-06 18:00:36
【问题描述】:
我有一个带有一堆不同邮政编码的 JSON 文件。我想做的是利用 Google Maps API 检索与邮政编码关联的城市,然后将其写入 JSON 文件。
到目前为止,我有一个脚本可以正确地从结果中获取城市。我将如何将这些城市写入 JSON 文件?
这是我的 JSON 数据:
[
{
"State": "Oklahoma",
"ZIP": 73169
},
{
"State": "Oklahoma",
"ZIP": 73169
},
{
"State": "Oklahoma",
"ZIP": 73170
},
{
"State": "Oklahoma",
"ZIP": 73172
},
{
"State": "Oklahoma",
"ZIP": 73173
}
]
这是我的脚本:
$(function() {
$.get('locations.json', function(data) {
$.each(data, function(i, item) {
var zip = item.ZIP;
var url = "https://maps.googleapis.com/maps/api/geocode/json?address=" + zip + "&key=AIzaSyD_YqB4d_-xKcmNP9jJCiPkJYDS8J3f6pI";
$.get(url, function(loc) {
for(var i=0;i<loc.results.length;i++) {
var address = loc.results[i].formatted_address;
var city = address.split(',', 1)[0]
console.log(city);
}
});
});
});
});
更新:
我找到了一种使用 NodeJS from this question 写入我的 JSON 文件的方法,下面的代码成功地将我的每个 JSON 对象的“City”更新为“test”,现在我想我只需要帮助将其合并到我的 jQuery 代码:
fs = require('fs');
var m = JSON.parse(fs.readFileSync('locations.json').toString());
m.forEach(function(p){
p.City = "test";
});
fs.writeFile('locations.json', JSON.stringify(m));
如果这样更容易的话,我也愿意使用 PHP。
又一次尝试(最接近我的尝试):
计划是仅使用此脚本一次以使用所有城市填充 JSON。所以我想我会尝试在客户端做这件事,我可以在其中注销一些 JSON 数据,然后手动复制/粘贴它,而不是依赖服务器端代码为我做这件事。这让我想到了这个解决方案:
$(function() {
var item = [];
var locations = [
{
"State": "Oklahoma",
"ZIP": "73169",
"City": ""
},
{
"State": "Oklahoma",
"ZIP": "73169",
"City": ""
},
{
"State": "Oklahoma",
"ZIP": "73170",
"City": ""
},
{
"State": "Oklahoma",
"ZIP": "73172",
"City": ""
},
{
"State": "Oklahoma",
"ZIP": "73173",
"City": ""
}
];
$.each(locations, function(i, item) {
var zip = item.ZIP;
var url = "https://maps.googleapis.com/maps/api/geocode/json?address=" + zip + "&key=AIzaSyA75wif8_yewifGSqVFnR3U50zuW_EnAns";
$.get(url, function(loc) {
for(var i=0;i<loc.results.length;i++) {
var address = loc.results[i].formatted_address;
var city = address.split(',', 1)[0];
item.City = city;
console.log(item);
}
});
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
如果我在for 语句中注销item,它会正确返回所有内容。如何将其输出为 JSON 格式的单个数组?
【问题讨论】:
-
想解释一下否决票?
-
您是否尝试在客户端 JavaScript 中创建和保存文件(即在浏览器中运行)?
-
文件的保存方式或保存位置并不重要,我只会运行一次以将城市填充到 JSON 文件中,然后不再使用它。即使我可以在客户端修改 JSON 并能够将其复制/粘贴到 JSON 文件中,这也足够了。
标签: javascript json node.js google-maps