-1

我需要帮助来解决以下代码。我有一个提供如下输出流的 API

{
   "country":"Germany",
   "os":"Windows 7",
   "from_mobile":false,
   "base_browser":"Chrome",
   "domain":"furnitureshop4u-2.myshopify.com",
   "browser":"Chrome 76.0.3809",
   "repeat":true,
   "location":"Meinerzhagen - North Rhine-Westphalia, Germany",
   "base_os":"Windows"
}{
   "country":"Germany",
   "os":"Windows 7",
   "from_mobile":false,
   "base_browser":"Chrome",
   "domain":"furnitureshop4u-2.myshopify.com",
   "browser":"Chrome 76.0.3809",
   "repeat":true,
   "location":"Meinerzhagen - North Rhine-Westphalia, Germany",
   "base_os":"Windows"
}{
   "country":"Germany",
   "os":"Windows 7",
   "from_mobile":false,
   "base_browser":"Chrome",
   "domain":"furnitureshop4u-2.myshopify.com",
   "browser":"Chrome 76.0.3809",
   "repeat":true,
   "location":"Meinerzhagen - North Rhine-Westphalia, Germany",
   "base_os":"Windows"
}

那么任何人都可以帮助我如何将此输出作为 CSV 流式传输到另一个 API。

我正在使用 axios 调用 API,并希望将输出流式传输到其他 post API。

4

2 回答 2

0

您可以使用json2csv

const { Parser } = require('json2csv');

const fields = ['country', 'os', 'from_mobile', 'base_browser', 'domain', 'browser', 'repeat', 'location', 'base_os'];
const opts = { fields };

try {

  const parser = new Parser(opts);
  const csv = parser.parse(myData);

  console.log(csv);
} 
catch (err) {

  console.error(err);

}
于 2019-10-09T07:07:55.360 回答
0

首先你应该更新你的 json,格式错误,接下来你可以使用这个模块进行 convert json to csv

var jsonToCsv = require('convert-json-to-csv');
var inputJson = [{ "country": "Germany", "os": "Windows 7", "from_mobile": false, "base_browser": "Chrome", "domain": "furnitureshop4u-2.myshopify.com", "browser": "Chrome 76.0.3809", "repeat": true, "location": "Meinerzhagen - North Rhine-Westphalia, Germany", "base_os": "Windows" }, { "country": "Germany", "os": "Windows 7", "from_mobile": false, "base_browser": "Chrome", "domain": "furnitureshop4u-2.myshopify.com", "browser": "Chrome 76.0.3809", "repeat": true, "location": "Meinerzhagen - North Rhine-Westphalia, Germany", "base_os": "Windows" }, { "country": "Germany", "os": "Windows 7", "from_mobile": false, "base_browser": "Chrome", "domain": "furnitureshop4u-2.myshopify.com", "browser": "Chrome 76.0.3809", "repeat": true, "location": "Meinerzhagen - North Rhine-Westphalia, Germany", "base_os": "Windows" }]
var columnDefinitionArray = ['country', 'os', 'from_mobile', 'base_browser', 'domain', 'browser', 'repeat', 'location', 'base_os'];
var arrayOfObjectsCsv = jsonToCsv.convertArrayOfObjects(inputJson, columnDefinitionArray);
console.log(arrayOfObjectsCsv);

并且不使用模块:

 var inputJson = [{ "country": "Germany", "os": "Windows 7", "from_mobile": false, "base_browser": "Chrome", "domain": "furnitureshop4u-2.myshopify.com", "browser": "Chrome 76.0.3809", "repeat": true, "location": "Meinerzhagen - North Rhine-Westphalia, Germany", "base_os": "Windows" }, { "country": "Germany", "os": "Windows 7", "from_mobile": false, "base_browser": "Chrome", "domain": "furnitureshop4u-2.myshopify.com", "browser": "Chrome 76.0.3809", "repeat": true, "location": "Meinerzhagen - North Rhine-Westphalia, Germany", "base_os": "Windows" }, { "country": "Germany", "os": "Windows 7", "from_mobile": false, "base_browser": "Chrome", "domain": "furnitureshop4u-2.myshopify.com", "browser": "Chrome 76.0.3809", "repeat": true, "location": "Meinerzhagen - North Rhine-Westphalia, Germany", "base_os": "Windows" }]


console.log(convert(inputJson))
function convert(json) {
    if(json == '')
        return;
    var largestEntry = 0;
    var header;
    for(var i=0; i<json.length; i++){
        if (!Object.keys) {
            Object.keys = function(obj) {
                var keys = [];
                for (var i in obj) {
                    if (obj.hasOwnProperty(i)) {
                        keys.push(i);
                    }
                }
                return keys;
            };
        }
        if(Object.keys(json[i]).length > largestEntry){
            largestEntry = Object.keys(json[i]).length;
            header = Object.keys(json[i]);
        }
    };
    // Assemble the header
    var convertedjson = "";
    if (typeof Array.prototype.forEach != 'function') {
        Array.prototype.forEach = function(callback){
          for (var i = 0; i < this.length; i++){
            callback.apply(this, [this[i], i, this]);
          }
        };
    }
    header.forEach(function(heading){
        if(convertedjson != "") {
            convertedjson += ",";
        }
        convertedjson += "\"";
        convertedjson += heading
        convertedjson += "\"";
    });
    convertedjson += "\r\n";
    // Iterate through the header for all elements
    json.forEach(function(entry){
        header.forEach(function(heading){
            convertedjson += "\"";
            convertedjson += (entry[heading] || "");
            convertedjson += "\"";
            convertedjson += ",";
        });
        convertedjson = convertedjson.substring(0, convertedjson.length - 1);
        convertedjson += "\r\n";
    });
    return convertedjson;
}

于 2019-10-09T07:18:37.370 回答