#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.']