es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

PHP crea una respuesta JSON desde PHP para que se parezca al resultado de la API de Stripe.

Necesito crear una respuesta JSON que se parezca a la respuesta de la API de Stripe utilizando PHP.
Esta es la estructura que quiero obtener:

{
    "body": "{\n  \"error\": \"Please enter a valid secret key\",\n}\n",
}

Este es el código que tengo hasta ahora:

Primeramente creo el array:

class Error {

    public $errors = array(
        'body' => array( 'error' => false ),
    );

    if ($this->errors['body']['error'] === false) {
        $this->errors['body']['error'] = 'Please enter a valid secret key';
    }

    $resp = json_encode( $this->errors );
    echo wp_send_json( $resp );
}

Pero el resultado que obtengo es:
json_encode result:

{"body":{"error":"Please enter a valid secret key"}}

echo wp_send_json( $resp ) result:

res = "{\"body\":{\"error\":\"Please enter a valid secret key\"}}"

No quiero que el body sea codificado.
¿Qué me falta?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para obtener la salida deseada, debes ajustar la estructura del array y utilizar la función json_decode() con el parámetro true para decodificar la cadena JSON a un array.

    Aquí hay un código actualizado:

    class Error {
      public $errors = array(
        'error' => 'Por favor, ingrese una clave secreta válida',
      );
    
      public function generateResponse() {
        $resp = array(
          'body' => json_decode('{' . json_encode($this->errors) . '}', true),
        );
        return json_encode($resp);
      }
    }
    
    $error = new Error();
    echo $error->generateResponse();
    

    Explicación:

    • Crea un array con el mensaje de error.
    • Define una función generateResponse() para generar la respuesta JSON.
    • En la función, define un array con la clave body, y pasa el array $errors a la función json_encode() para codificarlo como una cadena JSON.
    • Utiliza json_decode() con el parámetro true para decodificar la cadena a un array, y envuélvelo con llaves para que coincida con la estructura deseada.
    • Devuelve el array resp codificado.
    • Crea una instancia de la clase Error y llama a la función generateResponse() para mostrar la respuesta JSON.

    La salida debería ser:

    {
      "body": {
        "error": "Por favor, ingrese una clave secreta válida"
      }
    }
    

Comments are closed.