Я хочу использовать открытый API для своего приложения. для этого я подумал, что смогу сохранить города и их идентификаторы в своем собственном приложении в файле json, и всякий раз, когда мне нужна погода в местоположении, приложение выбирает идентификатор города из json и выполняет вызов API.
для этого я загрузил файл Json размером 30 МБ, предоставленный Openweather, он содержит все страны и все их города. По-видимому, размещение 30 МБ в моем приложении - не очень хорошая идея. поэтому я решил извлечь только города моей страны. но дело в том, что эта идея не могла быть реализована. так много городов из разных стран имеют одинаковые названия. и извлеченный json снова был огромным. даже некоторые коды стран являются городами в других странах.
интересно, есть ли способ лучшей реализации. или любая идея или способ извлечь только города страны.
буду признательна за любую помощь в реализации прогноза погоды в моем приложении для разных городов.
Я знаю, что этот вопрос старый, но недавно я тоже столкнулся с этой проблемой. В итоге я сделал это, добавив city.list.json к экспортированному объекту JSON по умолчанию и написав скрипт узла, чтобы затем отделить города по коду страны:
var fs = require('fs');
var cityList = require('./city.list.js');
let output = {};
let countryCodes = [];
cityList.forEach((city) => {
const country = city.country;
if (country) {
if (!countryCodes.includes(country)) {
countryCodes.push(country);
}
if (!output[country]) {
output[country] = [];
}
output[country].push({
id: city.id,
name: city.name,
});
}
});
for (const [key, value] of Object.entries(output)) {
const fileName = 'city.' + key.toLowerCase() + '.json';
fs.writeFile(fileName, JSON.stringify(value), function (err) {
if (err) console.error(err.message);
console.info(fileName + ' - saved!');
});
}
fs.writeFile('countrycodes.json', JSON.stringify(countryCodes), function (err) {
if (err) console.error(err.message);
console.info('countrycodes.json' + ' - saved!');
});
Это полностью сработало! Единственная проблема, с которой я столкнулся, заключается в том, что city.list.json включает названия стран, и они не различаются в данных...