Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

261
Vistas
Cómo usar correctamente JSON.stringify con un objeto PHP devuelto JS

Tengo un script php que ejecuta un script de python y obtuve un objeto como este:

 {'data': [{'article title', 'article description', 'timestamp', 'weburl'}], 'status': 200, 'answers': [1]}

Como sé, tengo que transformar esto en un javascript JSON de javascript object de javascript.

Y lo intenté como

 myjs = JSON.parse(JSON.stringify(answer))

y

 JSON.stringify(answer)

o incluso simplemente concatenar con " al principio y al final. Pero tampoco obtuve un buen resultado. Entonces, ¿cuál es la forma correcta? ¿O debería cambiar algo en el lado de php?

La parte php es simplemente esto:

 if ($_GET['times'] == 0) { $command = escapeshellcmd('python3 feed.py '. $_GET['subject']); $output = json_encode(shell_exec($command)); header('Content-type: application/json'); echo $output; }

Esto está en mi script de python :

 #!/usr/bin/python import requests import json import html import sys requestpost = requests.post('NewsSource') response_data = requestpost.json() data = [] status = 0 answers = 0 out = {"data":[], "status":[], "answers":[0]} searchterm = sys.argv[1] error = 0 if requestpost.status_code == 200: out["status"] = 200 for news in response_data["news"]: try: currentNews = json.loads(news) if ((html.unescape(currentNews["title"]) != "Array" and html.unescape(currentNews["title"]).lower().find(searchterm.lower()) != -1) or (html.unescape(currentNews["description"]).lower().find(searchterm.lower()) != -1)): outnews = {html.unescape(currentNews["timestamp"]), html.unescape(currentNews["title"]), html.unescape(currentNews["description"]), html.unescape(currentNews["link"])} out["data"].append(outnews) out["answers"][0] = out["answers"][0] +1 except: error += 1 else: out["status"] = 404 print (out)
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Cambie el script de Python para que imprima JSON en lugar del formato de Python.

 print(json.dumps(out))

Sin embargo, los conjuntos no están en JSON, así que cambia outnews a una lista.

 outnews = [html.unescape(currentNews["timestamp"]), html.unescape(currentNews["title"]), html.unescape(currentNews["description"]), html.unescape(currentNews["link"])]

Luego, el script PHP simplemente puede devolver eso al cliente.

 if ($_GET['times'] == 0) { $command = escapeshellcmd('python3 feed.py '. $_GET['subject']); header('Content-type: application/json'); passthru($command); }

Si passthru() no funciona, puede probar con su shell_exec() original. No necesita llamar a json_encode() porque ya está codificado.

 if ($_GET['times'] == 0) { $command = escapeshellcmd('python3 feed.py '. $_GET['subject']); $output = shell_exec($command); header('Content-type: application/json'); echo $output; }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Además, si quiero recuperar todas las noticias que cambiar out devolverlas de esta manera:

 out = [] error = 0 status = 0 nrOfResults = 0 if requestpost.status_code == 200: status = 200 for news in response_data["news"]: try: currentNews = json.loads(news) if ((html.unescape(currentNews["title"]) != "Array" and html.unescape(currentNews["title"]).lower().find(searchterm.lower()) != -1) or (html.unescape(currentNews["description"]).lower().find(searchterm.lower()) != -1)): outnews = [html.unescape(currentNews["timestamp"]), html.unescape(currentNews["title"]), html.unescape(currentNews["description"]), html.unescape(currentNews["link"])] out.append(outnews) nrOfResults = nrOfResults +1 except: error += 1 else: status = 404 out.append(status) out.append(nrOfResults) #outnews = [html.unescape(currentNews["timestamp"]), html.unescape(currentNews["title"]), html.unescape(currentNews["description"]), html.unescape(currentNews["link"])] print(json.dumps(out))

que el último elemento de la matriz js será el número de resultados y el anterior será el estado del enlace de origen.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda