我在将字符串转换为对象时遇到问题
我在页面加载时运行此代码
router.get('/dashboard', ensureAuthenticated, (req, res) => {
var dataToSend2;
// spawn new child process to call the python script
const ls = spawn('python', ['./readDirectory.py']);
// collect data from script
ls.stdout.on('data', function (data) {
console.log('Pipe data from python script ...');
dataToSend2 = data.toString();
console.log(JSON.parse(dataToSend2));
});
// in close event we are sure that stream from child process is closed
ls.on('close', (code) => {
console.log(`child process close all stdio with code ${code}`);
// send data to browser
})
res.render('dashboard', {
directory: dataToSend2
})
此脚本运行此python脚本
import os
for root, dirs, files in os.walk(".", topdown=True):
items = {
'root': root, 'label': dirs, 'files': files
}
print(items)
这就给了我这个输出(输出的snippit)
{'root': '.\\node_modules\\acorn\\bin', 'label': [], 'files': ['acorn', 'generate-identifier-regex.js', 'update_authors.sh']} {'root': '.\\node_modules\\acorn\\dist', 'label': [], 'files': ['.keep', 'acorn.es.js', 'acorn.js', 'acorn_loose.es.js', 'acorn_loose.js', 'walk.es.js', 'walk.js']} {'root': '.\\node_modules\\acorn\\rollup', 'label': [], 'files': ['config.bin.js', 'config.loose.js', 'config.main.js', 'config.walk.js']}
但是当我试着运行这个时,我得到一个错误
{'root': '.', 'label': ['config', 'models', 'node_modules', 'public', 'routes', 'views'], 'files': ['app.js', 'bundle.js', 'package-lock.json', 'package.json', 'readDirectory.py', 'readFile.py', 'README.md']}
^
SyntaxError: Unexpected token ' in JSON at position 1
我可能做错了什么?我正在尝试将其转换为一个对象,以便稍后进行迭代。我尝试在不将数据管道中的信息转换为字符串的情况下执行此操作,但随后我只将一组缓冲区信息发送到浏览器
您必须返回有效的
json
,而不是python,尽管在本例中除了缺少双引号外几乎相同。此外,我认为您应该加入所有结果,例如,在列表中:您的问题是,'':''不是json。 你必须使用
相关问题 更多 >
编程相关推荐