JSON to JS Object и удаление кавычек на ключах
У меня есть следующий JSON:
{
"apps": {
"1C-Bitrix": {
"cats": [
1
],
"headers": {
"Set-Cookie": "BITRIX_",
"X-Powered-CMS": "Bitrix Site Manager"
},
"html": "(?:<link[^>]+components/bitrix|(?:src|href)=\"/bitrix/(?:js|templates))",
"implies": "PHP",
"script": "1c-bitrix",
"website": "www.1c-bitrix.ru",
"icon": "1C-Bitrix.png"
},
"1und1": {
"cats": [
6
],
"implies": "PHP",
"url": "/shop/catalog/browse\\?sessid=",
"website": "1und1.de",
"icon": "1und1.png"
}
}
Я хочу превратить его в объект Javascript, удаляя двойные кавычки на ключах и двойные escape-символы в выражениях regex.
Есть ли способ сделать это, я боролся с узлом и JSON.stringify, и я просто не могу получить правильный вывод.
Причина, по которой я хочу это сделать, заключается в следующем:
(function() {
//'use strict';
if ( wappalyzer == null ) return;
var w = wappalyzer;
w.apps = {
'1C-Bitrix': {
cats: [ 1 ],
headers: { 'X-Powered-CMS': /Bitrix Site Manager/, 'Set-Cookie': /BITRIX_/i },
html: /<link[^>]+components\/bitrix|(src|href)=("|')\/bitrix\/(js|templates)/i,
script: /1c\-bitrix/i,
implies: [ 'PHP' ]
},
'1und1': {
cats: [ 6 ],
url: /\/shop\/catalog\/browse\?sessid\=/,
implies: [ 'PHP' ]
}
};
})();
Ожидается объект Javascript (w.apps)
Если я заменю на JSON, как это, это не удастся:
(function() {
//'use strict';
if ( wappalyzer == null ) return;
var w = wappalyzer;
w.apps = {
"1C-Bitrix": {
"cats": [
1
],
"headers": {
"Set-Cookie": "BITRIX_",
"X-Powered-CMS": "Bitrix Site Manager"
},
"html": "(?:<link[^>]+components/bitrix|(?:src|href)=\"/bitrix/(?:js|templates))",
"implies": "PHP",
"script": "1c-bitrix",
"website": "www.1c-bitrix.ru",
"icon": "1C-Bitrix.png"
},
"1und1": {
"cats": [
6
],
"implies": "PHP",
"url": "/shop/catalog/browse\\?sessid=",
"website": "1und1.de",
"icon": "1und1.png"
}
};
})();
1 ответ
Вы можете просто вставить этот объект в JavaScript, он правильно его интерпретирует:
var obj = {
"apps": {
"1C-Bitrix": {
"cats": [
1
],
"headers": {
"Set-Cookie": "BITRIX_",
"X-Powered-CMS": "Bitrix Site Manager"
},
"html": "(?:<link[^>]+components/bitrix|(?:src|href)=\"/bitrix/(?:js|templates))",
"implies": "PHP",
"script": "1c-bitrix",
"website": "www.1c-bitrix.ru",
"icon": "1C-Bitrix.png"
},
"1und1": {
"cats": [
6
],
"implies": "PHP",
"url": "/shop/catalog/browse\\?sessid=",
"website": "1und1.de",
"icon": "1und1.png"
}
}
};
document.body.innerText = "See, no escaping: " + obj.apps['1und1'].url;
Если вы получите этот JSON в виде строки (например, в результате вызова AJAX), вы можете использовать JSON.parse
преобразовать строку JSON в объект:
var ajaxResult = "{ \"apps\": { \"1C-Bitrix\": { \"cats\": [ 1 ], \"headers\": { \"Set-Cookie\": \"BITRIX_\", \"X-Powered-CMS\": \"Bitrix Site Manager\" }, \"html\": \"(?:<link[^>]+components\/bitrix|(?:src|href)=\\\"\/bitrix\/(?:js|templates))\", \"implies\": \"PHP\", \"script\": \"1c-bitrix\", \"website\": \"www.1c-bitrix.ru\", \"icon\": \"1C-Bitrix.png\" }, \"1und1\": { \"cats\": [ 6 ], \"implies\": \"PHP\", \"url\": \"\/shop\/catalog\/browse\\\\?sessid=\", \"website\": \"1und1.de\", \"icon\": \"1und1.png\" } } }";
var obj = JSON.parse(ajaxResult);
document.body.innerText = "See, no escaping: " + obj.apps['1und1'].url;