从节点API提取数据并保存输出

时间:2019-11-04 09:57:37

标签: node.js

这是上一个问题的延续,但是,我认为这个问题与上一个问题完全不同。

我正在尝试通过node.js API

获取数据

根据自述文件,以JSON格式检索数据。

我想获取一个活跃的重量级拳击手的列表以及与所述拳击手相关的信息,并将输出保存为json,然后我将对其进行清理以进行进一步的分析。

不确定我在做什么错,但是; i。)我无法如自述输出(对于getRatings方法)所示打印出与所述拳击手关联的json输出,并且无法将此数据转储到JSON或csv文件中。输出文件只是空的。

这是我的代码:

const boxrec = require("boxrec").Boxrec;
const fastcsv = require('fast-csv');
const fs = require('fs');
async function getCookieJar(){
    try {
        const cookieJar = await boxrec.login('**','****');
        return cookieJar;
    } catch (e) {
        console.log("Login error: " + e);
    }
};
async function writeData() {
    const cookieJar = await getCookieJar();
    var boxers = await boxrec.getRatings(cookieJar, {
        "division": "Heavyweight",
        "sex": "M",
        "status": "a"
    });
    const ws = fs.writeFileSync('C:\\Users\\User\\Documents\\testing.json', JSON.stringify(boxers));
};
try {
    writeData();
} catch (error) {
    console.log("Error in writeData: " + error);
}

如果我只是简单地使用console.log(boxers)打印出拳击手,这就是产生的输出:

i {
  '$': [Function: initialize] {
    fn: initialize { constructor: [Circular], _originalRoot: [Object] },
    load: [Function],
    html: [Function],
    xml: [Function],
    text: [Function],
    parseHTML: [Function],
    root: [Function],
    contains: [Function],
    merge: [Function],
    _root: {
      type: 'root',
      name: 'root',
      namespace: 'http://www.w3.org/1999/xhtml',
      attribs: [Object: null prototype] {},
      'x-attribsNamespace': [Object: null prototype] {},
      'x-attribsPrefix': [Object: null prototype] {},
      children: [Array],
      parent: null,
      prev: null,
      next: null
    },
    _options: {
      withDomLvl1: true,
      normalizeWhitespace: false,
      xml: false,
      decodeEntities: true
    }
  }
}

1 个答案:

答案 0 :(得分:1)

输出开始处的public async Task<string> Import(string IsNewCycle) { /*Some Code*/ await Task.Run(() => { /*Some Code*/ int iProgress =Convert.ToInt32(dProgress * 100); HttpContext.Application["Progress" ] = iProgress; }); return string; } public ActionResult GetProgress() { return Json(new { Progress = HttpContext.Application["Progress"] }, JsonRequestBehavior.AllowGet); } 确定不是JavaScript纯对象。确定这是i类型(最小的JavaScript)类型的实例,无法与i配合使用。

通过查看源代码herehere,您可以看到它实际返回的是一个JSON.stringify()实例,它不是普通的JavaScript对象,而是一个您应该通过调用方法来访问属性等等。

我想您应该阅读源代码以了解正在发生的事情或到达其issues并询问正在发生的事情,因为结果不是README中声明的JSON对象。

顺便说一句,在JavaScript中序列化实例的通常方法是访问您要保存的属性,因为对整个实例进行BoxrecPageRatings并不是一件好事(如您所注意到的):< / p>

JSON.stringify()