简体   繁体   English

美化JavaScript中的字符串化对象以在静态html页面中投放

[英]Prettify stringified object in javascript to serve in a static html page

I'm trying to use this code to prettify a JSON object retrieved from another service and return it in a static page (has to be). 我正在尝试使用此代码来美化从另一个服务检索到的JSON对象,并将其返回到静态页面(必须是)。

The javascript functions work but I'm having issues dealing with the stringified object. javascript函数正常工作,但是在处理字符串对象时出现问题。

It works fine encoding for example before the return statement for the html 例如,它可以在html的return语句之前进行良好的编码

json = "{\"a\":\"b\",\"c\":\"d\"}"

and not using stringify but it does not using JSON.stringify with a real JSON object instead. 而不使用stringify,但它不使用JSON.stringify和真实的JSON对象。

function getStaticResponse(jsonObjectRetrieved){

 return '<html>'
            + '<head>'
                + '<title>' + 'title' + '</title>'
                + '<link rel="stylesheet" type="text/css" href="'
                    + '/something' + '">'
            + '</head>'

             + '<body>'
              + '<pre class="json-output box bg-color-weight-6 font-calibri">'
              + jsonFormat(JSON.stringify(jsonObjectRetrieved))
              + '</pre>'
            + '</body>'

         + '</html>';
}

function transformJson(k, v) {
  if (k === 'href' && typeof v === 'string') {
      var label = v.replace(/&/gi, '&amp;');
    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>"');
};

Many thanks 非常感谢

Try removing call to JSON.stringify at jsonFormat(JSON.stringify(jsonObjectRetrieved)) 尝试删除对JSON.stringify jsonFormat(JSON.stringify(jsonObjectRetrieved))调用

 var json = "{\\"a\\":\\"b\\",\\"c\\":\\"d\\"}"; function getStaticResponse(title, jsonObjectRetrieved) { return '<html>' + '<head>' + '<title>' + title + '</title>' + '<link rel="stylesheet" type="text/css" href="' + 123 + '">' + '</head>' + '<body>' + '<pre class="json-output box bg-color-weight-6 font-calibri">' + jsonFormat(jsonObjectRetrieved) + '</pre>' + '</body>' + '</html>'; } function transformJson(k, v) { if (k === 'href' && typeof v === 'string') { var label = v.replace(/&/gi, '&amp;'); return '<a href=' + v + '>' + label + '</a>'; } return v; } function jsonFormat(jsonString) { var jsonObj = JSON.parse(jsonString, transformJson); return JSON.stringify(jsonObj, null, 2) .replace(/\\s"(\\w*)":/g, ' "<span class="key">$1</span>":') .replace(/:\\s"(.*)"/g, ': "<span class="string">$1</span>"'); }; document.write(getStaticResponse("abc", json)); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM