You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何读取NodeJS传递的JSON数组内的answertext字段值?

问题原因

问题出在两端的参数传递&解析逻辑都有错误:

  • Node.js端直接展开对象数组作为进程启动参数时,JS对象会被默认转为[object Object]字符串,你实际传递给Python的根本不是完整的JSON结构
  • Python端的序列化/反序列化逻辑颠倒,json.dumps是把Python对象转成JSON字符串,你反而把拿到的字符串又做了一次序列化,完全不符合解析要求
修复步骤

1. Node.js端修改

先把整个数据数组序列化为完整的JSON字符串,再作为单个参数传递给Python脚本,不要直接展开对象数组:

const pythonPromise = (data) => {
    return new Promise((resolve, reject) => {
        // 先序列化整个数组为JSON字符串
        const jsonData = JSON.stringify(data);
        const python = spawn("python", ["./patricia/patricia.py", jsonData])
        python.stdout.on("data", (data)=> {
            resolve(data.toString())
        })
        python.stderr.on("data", (data)=> {
            reject(data.toString());
        })
    })
}

2. Python端修改

直接读取传入的JSON字符串参数,用json.loads直接解析即可,不需要额外做dumps操作:

import sys
import json
from googlesearch import search

# 读取第二个参数(第一个参数是脚本自身路径)并解析为Python对象
data = json.loads(sys.argv[1])

# 遍历获取所有answertext字段值
for item in data:
    current_answer = item['answertext']
    print(f'Esto es lo que me esta llegando: {current_answer}')
    # 此处可添加谷歌搜索逻辑

兼容提示

如果你的数据中包含空格、特殊符号,建议在Node.js端序列化后额外做base64编码,Python端接收后先解码再解析JSON,避免命令行参数转义异常。

内容的提问来源于stack exchange,提问作者Irwin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 21:45:05