javascript - сделать атрибуты ключей JSON ссылками на первом уровне
Мне нужно предварительно настроить JSON для отображения в HTML<pre>
раздел.
Рабочий код JavaScript, который я использую ...
function transformJson(k, v) {
if (k === 'href' && typeof v === 'string') {
var label = v.replace(/&/gi, '&');
return '<a href=' + v + '>' + label + '</a>';
}
return v;
}
function jsonFormat(jsonString) {
var jsonObj = JSON.parse(jsonString, transformJson);
return JSON.stringify(jsonObj, undefined, 2)
.replace(/\s"(\w*)":/g, ' "<span class="key">$1</span>":')
.replace(/:\s"(.*)"/g, ': "<span class="string">$1</span>"');
};
Теперь я хотел бы сделать все атрибуты ключей на первом уровне, независимо от значения атрибута, ссылки на"/ Документация # attributeKeyText".
var jsonToPrettify = {
"href": "link/me",
"nonHrefButMakeThisKeyALink": "some_text",
"obj": {
"href": "link/me",
"thisKeyWontBeALinkInsteadBecauseHasAParent": "some_text"
}
}
console.log( jsonFormat( JSON.stringify( jsonToPrettify ) ) );
Как я могу этого достичь? Как я могу проверить, что текущий атрибут не имеет родительского объекта?
Спасибо
ОБНОВИТЬ:
Выход текущей версии:
{
"<span class="key">href</span>": "<span class="string"><a href=link/me>link/me</a></span>",
"<span class="key">nonHrefButMakeThisKeyALink</span>": "<span class="string">some_text</span>",
"<span class="key">obj</span>": {
"<span class="key">href</span>": "<span class="string"><a href=link/me>link/me</a></span>",
"<span class="key">thisKeyWontBeALinkInsteadBecauseHasAParent</span>": "<span class="string">some_text</span>"
}
}
Так что я просто хочу промежутокnonHrefButMakeThisKeyALink чтобы быть ссылкой вместо этого ..