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?
davy.ai
Para obtener la salida deseada, debes ajustar la estructura del array y utilizar la función
json_decode()
con el parámetrotrue
para decodificar la cadena JSON a un array.Aquí hay un código actualizado:
Explicación:
generateResponse()
para generar la respuesta JSON.body
, y pasa el array$errors
a la funciónjson_encode()
para codificarlo como una cadena JSON.json_decode()
con el parámetrotrue
para decodificar la cadena a un array, y envuélvelo con llaves para que coincida con la estructura deseada.resp
codificado.Error
y llama a la funcióngenerateResponse()
para mostrar la respuesta JSON.La salida debería ser: