如何在CasperJS中获取JSON?

时间:2017-02-02 18:40:42

标签: javascript json casperjs

我有一些参数name1,name2,name3。如何获取包含这些参数的JSON文件?我试着这样做,但我一无所获:

var jsonStr = this.evaluate(function(){
       var outjson = {};
       var outjson = {'name1': name1, 'name2': name2, 'name3': name3};
       return JSON.stringify(outjson);
       });
    fs.write('myFile.json', jsonStr, 'w');

1 个答案:

答案 0 :(得分:0)

该功能没有关闭,您评估。您可以在此处阅读相关内容:http://phantomjs.org/api/webpage/method/evaluate.html

评估函数时,这就是变量name1,name2和name3未定义的原因。

Phantom 2在当前版本中存在以下错误 - 评估功能中的错误不会引发任何异常。在这种情况下,评估只会返回 null

因此,您在评估的功能中出错并且什么都没有。

您可以尝试以下打印

的示例
  

jsonStr:{“name1”:1,“name2”:2,“name3”:3}

var casper = require('casper').create();
var fs = require('fs');

casper.start('http://casperjs.org/', function() {});

casper.then(function() {
    var jsonStr = this.evaluate(function() {
        var outJson = {'name1': 1, 'name2': 2, 'name3': 3};
        return JSON.stringify(outJson);
    });

    this.echo('jsonStr: ' + jsonStr);

    fs.write('myFile.json', jsonStr, 'w');

});

casper.run();

以及以下打印

的示例
  

jsonStr:null

var casper = require('casper').create();

casper.start('http://casperjs.org/', function() {});

casper.then(function() {
    var jsonStr = this.evaluate(function() {
        var outJson = {'name1': name1, 'name2': name2, 'name3': name3};
        return JSON.stringify(outJson);
    });

    this.echo('jsonStr: ' + jsonStr);
});

casper.run();