[Vue.js] 優美列印JSON字串


展示(demo)

在下方的 textarea 貼上任何有效的 JSON 字串。你會立即看到優美列印的結果。

{{ jsonstr | pretty }}

程式原始碼及解釋

HTML:

<div id="vueapp">
  <textarea v-model="jsonstr" rows="8" cols="40"></textarea>
  <pre>{{ jsonstr | pretty }}</pre>
</div>

<script src="https://unpkg.com/vue@2.2.4/dist/vue.js"></script>

想法很簡單。我們實作一個 Vue.js filter 來優美列印 textarea 裡的字串。 根據 [2] 裡面的答案, JavaScript 內建的 JSON.stringify 方法可以幫我們優美列印 JSON 字串,所以在 filter 裡頭,先用 JSON.parse 該字串, 然後再 JSON.stringify 它。

JavaScript:

'use strict';

new Vue({
  el: '#vueapp',
  data: {
    jsonstr: '{"id":1,"name":"A green door","price":12.50,"tags":["home","green"]}'
  },
  filters: {
    pretty: function(value) {
      return JSON.stringify(JSON.parse(value), null, 2);
    }
  }
})

測試環境:

  • Chromium Version 69.0.3497.81 on Ubuntu 18.04 (64-bit)
  • Vue.js 2.2.4

參考:

[1]
[2]How can I pretty-print JSON using JavaScript? - Stack Overflow