Обратите внимание, что с это commit в июне 2015 года (Jackson 2.6.2 и выше) теперь вы можете просто написать:
public enum Event {
@JsonProperty("forgot password")
FORGOT_PASSWORD;
}
Извлеките значения из текста элемента скрипта, как если бы вы делали это из строки:
function extractor(names) {
const r = new RegExp(names.map(n => `\\b(${n}):\\s*'(.*?)'`).join('|'), 'g');
for (const script of document.getElementsByTagName('script')) {
const text = script.textContent;
let match = r.exec(text);
if (match) {
const vars = {};
do {
const [/*source*/, name, value] = match;
vars[name] = value;
match = r.exec(text);
} while (match);
return vars;
}
}
}
При использовании всплывающего окна расширения для извлечения из веб-страницы нам нужна вспомогательная функция, которая запускает код в качестве сценария содержимого:
function extractPageScriptVars(names) {
return new Promise(resolve => {
chrome.tabs.executeScript({
code: '(() => (' + extractor + ')(' + JSON.stringify(names) + '))()',
}, ([vars]) => resolve(vars));
});
}
Использование:
(async () => {
const vars = await extractPageScriptVars(['AAA', 'BBB']);
alert(JSON.stringify(vars, null, ' '));
})();
Если сценарий содержит допустимый объект JSON / JS, вы можете найти его начальный / конечный индексы и извлечь всю декларацию string, затем проанализируйте его с помощью JSON.parse, который создает объект / массив, который вы можете использовать напрямую.