使用JSON.parse将字符串转换为对象

2024-06-16 08:29:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我在将字符串转换为对象时遇到问题

我在页面加载时运行此代码

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

我可能做错了什么?我正在尝试将其转换为一个对象,以便稍后进行迭代。我尝试在不将数据管道中的信息转换为字符串的情况下执行此操作,但随后我只将一组缓冲区信息发送到浏览器


Tags: modulesconfignodechilddatajsscriptroot
2条回答

您必须返回有效的json,而不是python,尽管在本例中除了缺少双引号外几乎相同。此外,我认为您应该加入所有结果,例如,在列表中:

import os
import json

items = []
for root, dirs, files in os.walk(".", topdown=True):
    items.append({'root': root, 'label': dirs, 'files': files})
print(json.dumps(items))

您的问题是,'':''不是json。 你必须使用

import json
json.dump(<data>)

相关问题 更多 >