我有一个打印JSON和字符串的python脚本:
# script.py
print('{"name": "bob", "height": 4, "weight": 145}')
print('hello')
sys.stdout.flush()
nodejs app通过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
。
答案 0 :(得分:0)
在你的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()的一部分,因为您正在从stdout读取... hello
不是JSON格式的。所以JSON.parse()将会失败。所以也要删除该行。
如果您在评论中说明有多个json对象要发送
您可以将所有数据合并到一个JSON对象中
my_object = {"data": "info"....}
和json.dumps()
单个较大的对象..
或
obj1 = {}
obj2 = {}
myobjects = [obj1, obj2]
print(json.dumps(myobjects))
并且Node端将接收可以在
上迭代的对象列表