简体   繁体   English

JAVASCRIPT 将 JSON Obj 转换为 CSV txt 文件?

[英]JAVASCRIPT Convert JSON Obj to CSV txt file?

I have a form with a submit button.我有一个带有提交按钮的表单。

Right now I have a bit of code that when the button is pressed it converts all of the form inputs into an object and downloads a.json file that looks like this:-现在我有一些代码,当按下按钮时,它会将所有表单输入转换为 object 并下载一个如下所示的.json 文件:-

{"productNumber":"12345678","cat1":"sports","val1":"yes","val2":"yes","val3":"no","val4":"no","val5":"no"}

The code I'm using to generate this is from a previous SO thread here: -我用来生成它的代码来自以前的 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>

What I'm trying to do is modify the code so my output button produces a.csv or.txt file that looks like this: -我要做的是修改代码,以便我的 output 按钮生成一个 .csv 或 .txt 文件,如下所示:-

12345678,sports,yes,yes,no,no,no

Is there a function I can use within Javascript to make this transformation before downloading the file?在下载文件之前,我可以在 Javascript 中使用 function 来进行此转换吗? I'm trying to reverse engineer this as a learning exercise so any insight you can provide over code snippets would help me a lot with this question!我正在尝试将其作为学习练习进行逆向工程,因此您可以通过代码片段提供的任何见解都会对我解决这个问题有很大帮助!

You can get CSV by quoting the values.您可以通过引用这些值来获得 CSV。 If there are quotes IN the values, we would need to escape them如果值中有引号,我们需要转义它们

 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);

If you do not need the quotes, do this如果您不需要引号,请执行此操作

 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);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM