#json #api #type-conversion
#json #API #тип-преобразование
Вопрос:
Я хочу преобразовать довольно неорганизованный и неструктурированный текстовый файл в формат JSON. Я хочу иметь возможность использовать информацию об идентификаторе города. Могу ли я в любом случае преобразовать это в JSON?
ОБНОВЛЕНИЕ: я также нашел это решение через некоторое время. Очень простой способ получить JSON любого текстового файла, разделенного табуляцией.
Комментарии:
1. Пожалуйста, поймите
.txt
, что это расширение иjson
формат данных. для преобразования чего-либоjson
в должно быть какое-то отношение, напримерkey-value
, pair иtable-column
т. Д. неструктурированный текстовый файл нельзя напрямую преобразовать вjson
формат.2. Кроме того, пожалуйста, также напишите, что вы делали или пробовали до сих пор в вопросе
3. Итак, если я найду файл .txt, который выглядит как cityname: CityId, вниз по списку. Тогда это можно было бы преобразовать, верно?
Ответ №1:
Вы можете попробовать использовать tsv2json этот инструмент может считывать файл tsv из стандартного файла и записывать файл json в стандартный вывод.
Он распространяется в исходном файле, для его компиляции вам нужно загрузить общий компилятор и затем запустить dmd tsv2json.d
.
Если у вас более сложная задача, есть другой инструмент с именем tsv-utils
Комментарии:
1. Понятия не имею, что все это значит, но, по крайней мере, теперь у меня есть отправная точка. Спасибо.
2. Если у вас нет опыта в программировании, вы можете начать с чтения этой книги ddili.org/ders/d.en Ваша задача очень проста. Вам нужны только базовые знания
3. Хорошо, я надеялся, что есть способ преобразовать неорганизованные строки в текстовом файле в формат JSON. Способ, который позволил бы создать структуру… итак, я рассмотрю это. Спасибо вам
Ответ №2:
Преобразование TSV в JSON в nodejs
var file_name = 'city_list.txt';
var readline = require('readline');
var fs = require('fs');
var lineReader = readline.createInterface({
input: fs.createReadStream(file_name)
});
var isHeader = false;
var columnNames = [];
function parseLine(line) {
return line.trim().split('t')
}
function createRowObject(values) {
var rowObject = {};
columnNames.forEach((value,index) => {
rowObject[value] = values[index];
});
return rowObject;
}
var json = {};
json[file_name] = [];
lineReader.on('line', function (line) {
if(!isHeader) {
columnNames = parseLine(line);
isHeader = true;
} else {
json[file_name].push(createRowObject(parseLine(line)));
}
});
lineReader.on('close', function () {
fs.writeFileSync(file_name '.json', JSON.stringify(json,null,2));
});