我有一个可以打印JSON和字符串的python脚本:
# script.py
print('{"name": "bob", "height": 4, "weight": 145}')
print('hello')
sys.stdout.flush()nodejs应用程序通过child-process调用python脚本。但是我在输出中遇到了错误。如何在nodejs中处理python输出?
// nodejs
var process = spawn('python3', ["./script.py", toSend]);
process.stdout.on('data', function(data) {
message = JSON.parse(data)
console.log(message)
})我从运行这个程序中得到了一个SyntaxError: Unexpected token。
发布于 2017-06-22 11:13:21
在你的python脚本中...这一行
print('{"name": "bob", "height": 4, "weight": 145}')应该改变
import json
print(json.dumps({"name": "bob", "height": 4, "weight": 145}))这将处理并确保JSON被正确格式化,这样JSON字符串就可以按节点进行解析(但您当前的版本应该没问题)。然而,在这种情况下,真正的问题是接下来的。
您的脚本将以
print('hello')这意味着JSON.parse()将尝试将hello解析为JSON.parse()的一部分,因为您正在从标准输出中读取...hello不是JSON格式的。所以JSON.parse()将会失败。所以也要删除这一行。
如果您有多个json对象要发送,如您在评论中所述。
您可以将所有数据合并到单个JSON对象my_object = {"data": "info"....}中,然后对单个较大的对象执行json.dumps()操作。
或
obj1 = {}
obj2 = {}
myobjects = [obj1, obj2]
print(json.dumps(myobjects))而Node端将接收到一个可以迭代的对象列表
https://stackoverflow.com/questions/44689298
复制相似问题