[英]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並且可以折疊/打開它,您可以使用我剛才做的這個指令來很好地渲染它:
除了已經提到的角度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.