所以这就是问题所在。我从 mongodb 集合中直接导出为 json 平面文件。我试图让我的 phantomjs 应用程序从 MongoDB 读取和解析平面文件,并将其转换为 phantomjs 解析的对象。由于某种原因,我无法正常解析 JSON 字符串。
(注意:没有 jQuery 解决方案。这需要是原始的 javascript)
这是我来自 mongodb 的平面文件。看起来不错:
{ "host" : "www.myfoxphilly.com", "path" : "/category/233430/entertainment", "created_at" : { "$date" : 1375199393295 }, "_id" : { "$oid" : "51f7e0a1dc12a13510000002" } }{ "host" : "www.news9.com", "path" : "/category/112032/news", "created_at" : { "$date" : 1375285798173 }, "_id" : { "$oid" : "51f9322668ee1e660c000001" } }{ "host" : "www.myfoxphilly.com", "path" : "/category/233430/entertainment", "created_at" : { "$date" : 1375285823602 }, "_id" : { "$oid" : "51f9323f68ee1e660c000002" } }
这是尝试解析上述 JSON 平面文件的配置文件
var fs = require('fs');
var data = fs.read('configData.json');
var newdata = JSON.stringify(data);
var dataobj = eval("["+newdata+"]");
console.log(typeof(newdata));
exports.tests = dataobj;
// Sample object (works fine like this):[{path:'/category/112043/sports' ,host:'www.newson6.com'}];
exports.getFileName = function(test,local) {
return 'results/' + test.host.replace(/\./g,'-').replace(/\:[0-9]+/,'').replace('-com','').replace('www-','') + test.path.replace(/\//g,'-').replace(/\?clienttype=/g, "clienttype") + ((local) ? '-locl' : '-prod')
}
所以当我运行幻影时,我没有得到任何数据。该 JSON 成为一个对象,而不是我在评论部分中的对象示例。
如果我只是替换 JS 通用库平面文件导入并将“数据”作为字符串,它就可以正常工作,如下所示:
var data = '{"host" : "www.myfoxphilly.com", "path" : "/some/path/233409"}';
当我将 JSON 作为字符串导入时,js 通用库文件导入是否存在某种问题?请帮忙。
再一次,没有 jQuery,我会不看就给你投反对票。我<3 jQuery,但你们需要意识到什么时候适合使用(即基于浏览器的js)。