#javascript #json #csv
#javascript #json #csv
Вопрос:
У меня есть форма с кнопкой отправки.
Прямо сейчас у меня есть немного кода, который при нажатии кнопки преобразует все входные данные формы в объект и загружает файл .json, который выглядит следующим образом:-
{"productNumber":"12345678","cat1":"sports","val1":"yes","val2":"yes","val3":"no","val4":"no","val5":"no"}
Код, который я использую для создания этого, взят из предыдущего потока SO здесь: —
<script>
(function() {
function toJSONString( form ) {
var obj = {};
var elements = form.querySelectorAll( "input, select" );
for( var i = 0; i < elements.length; i ) {
var element = elements[i];
var name = element.name;
var value = element.value;
if( name ) {
obj[ name ] = value;
}
}
return JSON.stringify( obj );
}
document.addEventListener( "DOMContentLoaded", function() {
var form = document.getElementById( "generatePayload" );
var output = document.getElementById( "output" );
form.addEventListener( "submit", function( e ) {
e.preventDefault();
var json = toJSONString( this );
output.innerHTML = json;
console.log(json)
var data = "text/json;charset=utf-8," json;
var a = document.createElement('a');
var accountNumber = document.getElementById( "productNumber" ).value
a.href = 'data:' data;
a.download = accountNumber '.json';
a.innerHTML = 'download FILE';
var container = document.querySelector( "#exportPayload" );
container.appendChild(a);
a.click();
a.remove();
console.log("Payload Export Successful!")
}, false);
});
})();
</script>
Что я пытаюсь сделать, так это изменить код, чтобы моя кнопка вывода создавала файл .csv или .txt, который выглядит следующим образом: —
12345678,sports,yes,yes,no,no,no
Есть ли функция, которую я могу использовать в Javascript, чтобы выполнить это преобразование перед загрузкой файла? Я пытаюсь перепроектировать это в качестве учебного упражнения, поэтому любая информация, которую вы можете предоставить по фрагментам кода, очень помогла бы мне с этим вопросом!
Ответ №1:
Вы можете получить CSV, заключив значения в кавычки. Если в значениях есть кавычки, нам нужно их экранировать
const obj = {"productNumber":"12345678","cat1":"sports","val1":"yes","val2":"yes","val3":"no","val4":"no","val5":"no"}
const csv = `"${Object.values(obj).join('","')}"`
console.log(csv);
Если вам не нужны кавычки, сделайте это
const obj = {"productNumber":"12345678","cat1":"sports","val1":"yes","val2":"yes","val3":"no","val4":"no","val5":"no"}
const csv = Object.values(obj).join(",")
console.log(csv);
Комментарии:
1. Привет, мплунгджан! Я не уверен, что я все правильно реализовал. Я вставил ваш второй фрагмент в свой код. Где я могу это реализовать? Я попытался реализовать это перед преобразованием в строку json, но как мне загрузить csv obj в конце?