Tengo una respuesta de una API (en realidad es un mensaje compuesto de AWS lex) y se ve así:
'{\"messages\":[{\"type\":\"PlainText\",\"group\":1,\"value\":\"Great!\"},{\"type\":\"PlainText\",\"group\":2,\"value\":\"Please click here.\"}]}'No puedo cambiar la respuesta a una cadena y necesito obtener de esa cadena el texto de:
"¡Excelente!" y "Haga clic aquí".
Básicamente cualquier cosa después de => "value\":\" y antes de \"}
He intentado muchos enfoques pero no pude dar en el clavo. ¿Hay alguna forma de hacer esto? Incluso intenté escribir una expresión regular, pero lo que pude obtener fue la cadena anterior y no el texto real que necesito.
Podemos usar JSON.parse para convertir su salida de API JSON en un objeto JS. Luego, podemos iterar todos los mensajes en la matriz y extraer los valores.
var input = '{\"messages\":[{\"type\":\"PlainText\",\"group\":1,\"value\":\"Great!\"},{\"type\":\"PlainText\",\"group\":2,\"value\":\"Please click here.\"}]}'; var x = JSON.parse(input); var arr = x.messages.map(item => item.value) console.log(arr);¿Por qué no JSON.parse() ?
const responseJson = '{"messages":[{"type":"PlainText","group":1,"value":"Great!"},{"type":"PlainText","group":2,"value":"Please click here."}]}'; const response = JSON.parse(responseJson); const values = response.messages.map(message => message.value); // values is now ['Great!', 'Please click here.']