簡體   English   中英

AngularJS格式JSON字符串輸出

[英]AngularJS format JSON string output

我有一個AngularJS應用程序,它從輸入中收集數據,使用JSON.stringify()將模型轉換為字符串,並允許用戶編輯此模型,以便在<textarea>元素更新時更新輸入字段反之亦然。 某種雙向綁定:)

問題是String本身看起來很難看,我想格式化它,所以它看起來像這樣:

在此輸入圖像描述

而不是現在看起來像:

在此輸入圖像描述

有什么想法可以實現嗎? 如果您需要一些額外的信息 - 請不要猶豫。 每個答案都受到高度贊賞並立即得到解答

謝謝。

PS我想這應該是某種指令或自定義過濾器。 數據本身不應該被改變,只有輸出。

Angular有一個用於顯示JSON的內置filter

<pre>{{data | json}}</pre>

請注意使用pre -tag來保存空格和換行符

演示:

 angular.module('app', []) .controller('Ctrl', ['$scope', function($scope) { $scope.data = { a: 1, b: 2, c: { d: "3" }, }; } ]); 
 <!DOCTYPE html> <html ng-app="app"> <head> <script data-require="angular.js@1.2.15" data-semver="1.2.15" src="//code.angularjs.org/1.2.15/angular.js"></script> </head> <body ng-controller="Ctrl"> <pre>{{data | json}}</pre> </body> </html> 

還有一個angular.toJson方法,但我還沒有玩過( Docs

您可以使用JSON.stringify()的可選參數

JSON.stringify(value[, replacer [, space]])

參數

  • value要轉換為JSON字符串的值。
  • replacer如果是一個函數,則轉換字符串化時遇到的值和屬性; 如果是數組,則指定最終字符串中對象中包含的屬性集。 有關替換器函數的詳細說明,請參閱javaScript指南文章使用本機JSON。
  • space使得生成的字符串打印得很漂亮。

例如:

JSON.stringify({a:1,b:2,c:{d:3, e:4}},null,"    ")

會給你以下結果:

"{
    "a": 1,
    "b": 2,
    "c": {
        "d": 3,
        "e": 4
    }
}"

如果您希望將JSON渲染為HTML並且可以折疊/打開它,您可以使用我剛才做的這個指令來很好地渲染它:

https://github.com/mohsen1/json-formatter/

在此輸入圖像描述

除了已經提到的角度json濾波器之外 ,還有角度toJson()函數

angular.toJson(obj, pretty);

此功能的第二個參數允許您打開漂亮的打印並設置要使用的空格數。

如果設置為true,則JSON輸出將包含換行符和空格。 如果設置為整數,則JSON輸出將包含每個縮進的許多空格。

(默認:2)

我想你想用來編輯json文本。 然后你可以使用ivarni的方式:

{{data | json}}
並添加adition屬性
  編輯 

\n\n<pre contenteditable="true">{{data | json}}</pre>

希望這可以幫到你。

如果要格式化JSON並執行一些語法突出顯示,可以使用ng-prettyjson指令。 請參閱npm包。

以下是如何使用它: <pre pretty-json="jsonObject"></pre>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM