2017-02-02 26 views
0

我有一些参数name1,name2,name3。我怎样才能得到一个包含这些参数的JSON文件?我尝试这样做,但我得到什么:如何在CasperJS中获得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'); 

回答

0

没有关闭的功能,你评估。你可以在这里阅读一些关于它的内容:http://phantomjs.org/api/webpage/method/evaluate.html

这就是为什么变量name1,name2和name3是undefined,当你评估函数。

幻影2在当前版本中有以下错误 - 函数中的错误是评估也不例外。在这种情况下,评估只需返回

所以,你有一个错误,你的功能是评估并得到什么。

可以尝试下面的例子中,打印

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:空

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(); 
+0

谢谢,当name1 ='string1',name2 ='string2'和name3 ='string3'时,情况如何。如何获得这些值的json文件?我试着去做,但我得到了空值.. – ZaurK

+0

@ZaurK我已经更新了答案 - 在第一个示例中添加了将JSON保存到文件。 –

+0

可能是我不明白的东西,但在第一个例子name1':1,它是行之有效的,但我需要'name1':name1,当name1是一个值得到dinamically,它不等于1 – ZaurK