Как мне красиво распечатать JSON с помощью JavaScript?

Я оригинальный разработчик iText, и проблема, с которой вы столкнулись, объясняется в моей книге .

Вы смешиваете текстовый режим и композитный режим.

В текстовом режиме вы создаете PdfPCell с Phrase в качестве параметра конструктора, и вы определяете выравнивание на уровне ячейки. Однако вы работаете в сложном режиме. Этот режим запускается, как только вы используете метод addElement(). В композитном режиме выравнивание, определенное на уровне ячейки, игнорируется (что объясняет вашу проблему). Вместо этого используется выравнивание отдельных элементов.

Как решить вашу проблему?

Либо работайте в текстовом режиме, добавив ваш Phrase в ячейку другим способом. Или работайте в композитном режиме и используйте Paragraph, для которого вы определяете выравнивание.

Преимущество композитного режима в текстовом режиме состоит в том, что разные абзацы в одной и той же ячейке могут иметь разные выравнивания, тогда как вы можете имеют одно выравнивание в текстовом режиме. Другим преимуществом является то, что вы можете добавить больше, чем просто текст: вы также можете добавлять изображения, списки, таблицы ... Преимущество текстового режима - скорость: для обработки содержимого ячейки требуется меньше времени обработки.

2118
задан Shog9 21 January 2014 в 04:22
поделиться

2 ответа

<!-- here is a complete example pretty print with more space between lines-->
<!-- be sure to pass a json string not a json object -->
<!-- use line-height to increase or decrease spacing between json lines -->

<style  type="text/css">
.preJsonTxt{
  font-size: 18px;
  text-overflow: ellipsis;
  overflow: hidden;
  line-height: 200%;
}
.boxedIn{
  border: 1px solid black;
  margin: 20px;
  padding: 20px;
}
</style>

<div class="boxedIn">
    <h3>Configuration Parameters</h3>
    <pre id="jsonCfgParams" class="preJsonTxt">{{ cfgParams }}</pre>
</div>

<script language="JavaScript">
$( document ).ready(function()
{
     $(formatJson);

     <!-- this will do a pretty print on the json cfg params      -->
     function formatJson() {
         var element = $("#jsonCfgParams");
         var obj = JSON.parse(element.text());
        element.html(JSON.stringify(obj, undefined, 2));
     }
});
</script>
0
ответ дан 22 November 2019 в 19:55
поделиться

Выделить и украсить его в HTML использование Bootstrap:

function pretifyJson(json, pretify) {
    if (typeof json !== 'string') {
        if(pretify){
            json = JSON.stringify(json, undefined, 4);
        }else{
            json = JSON.stringify(json);
        }
    }
    return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g,
        function (match) {
            let cls = "<span>";
            if (/^"/.test(match)) {
                if (/:$/.test(match)) {
                    cls = "<span class='text-danger'>";
                } else {
                    cls = "<span>";
                }
            } else if (/true|false/.test(match)) {
                cls = "<span class='text-primary'>";
            } else if (/null/.test(match)) {
                cls = "<span class='text-info'>";
            }
            return cls + match + "</span>";
        }
    );
}
0
ответ дан 22 November 2019 в 19:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: