Найдите все значения после определенной строки в другой строке

#javascript #regex #string

Вопрос:

У меня есть ответ от API (на самом деле это составное сообщение от AWS lex), и он выглядит так:

  '{"messages":[{"type":"PlainText","group":1,"value":"Great!"},{"type":"PlainText","group":2,"value":"Please click here."}]}'
 

Я не могу изменить ответ на строку, и мне нужно получить из этой строки текст:

«Отлично!» и «Пожалуйста, нажмите здесь».

В основном все, что после => > "value":" и до "}

Я перепробовал множество подходов, но не смог попасть в точку. Есть ли какой-нибудь способ сделать это, я даже пытался написать регулярное выражение, но то, что я мог получить, было строкой раньше, а не фактическим текстом, который мне нужен.

Ответ №1:

Мы можем использовать JSON.parse для преобразования ваших выходных данных API JSON в объект JS. Затем мы можем повторить все сообщения в массиве и извлечь значения.

 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); 

Комментарии:

1. Откуда берутся эти названия x и e откуда они берутся?

2. @Spectric Хорошая лямбда-штука…изучаю ее сейчас.

3. Как вам удалось получить 411 тысяч, не зная лямбд?

4. @RoboRobok У меня только серебряный рейтинг в JS. Большая часть моей репутации исходит из SQL, Java и R. Ну, я, конечно, знаю лямбды на Java.

5. @Spectric я знаю, но я все еще в шоке. Это какой-то ювенильный JS.

Ответ №2:

Почему бы тебе просто не воспользоваться 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.']