我有一个AngularJS应用程序,它从输入中收集数据,使用JSON.stringify()
将模型转换为字符串,并允许用户编辑此模型,以便在<textarea>
时更新输入字段元素更新,反之亦然。某种双向绑定:)
问题是String本身看起来很难看,我想格式化它,所以它看起来像这样:
现在不喜欢它了:
有关如何实现这一目标的任何想法?如果您需要一些额外的信息 - 请不要犹豫。每个答案都受到高度赞赏并立即回答。
谢谢。
P.S。我想这应该是某种指令或自定义过滤器。数据本身不应该被改变,只有输出。
答案 0 :(得分:413)
Angular有一个内置的filter
用于展示JSON
<pre>{{data | json}}</pre>
请注意使用pre
- 标记来保存空格和换行符
演示:
angular.module('app', [])
.controller('Ctrl', ['$scope',
function($scope) {
$scope.data = {
a: 1,
b: 2,
c: {
d: "3"
},
};
}
]);
&#13;
<!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>
&#13;
还有angular.toJson
方法,但我还没有玩过(Docs)
答案 1 :(得分:58)
您可以使用JSON.stringify()
JSON.stringify(value[, replacer [, space]])
<强>参数强>
- value 要转换为JSON字符串的值。
- 替换者如果是一个功能, 转换字符串化时遇到的值和属性;如果 array,指定包含在对象中的属性集 最后一串。替换器功能的详细说明是 javaScript指南文章中提供了使用本机JSON。
- 空间 导致生成的字符串打印得很漂亮。
例如:
JSON.stringify({a:1,b:2,c:{d:3, e:4}},null," ")
会给你以下结果:
"{
"a": 1,
"b": 2,
"c": {
"d": 3,
"e": 4
}
}"
答案 2 :(得分:23)
答案 3 :(得分:11)
除了已提到的angular json
filter之外,还有angular toJson()
function。
angular.toJson(obj, pretty);
此功能的第二个参数允许您打开漂亮的打印并设置要使用的空格数。
如果设置为true,则JSON输出将包含换行符和空格。如果设置为整数,则JSON输出将包含每个缩进的许多空格。
(默认:2)
答案 4 :(得分:3)
我想你想用来编辑json文本。 然后你可以使用ivarni的方式:
{{data | json}}并添加adition属性以生成
editable
<pre contenteditable="true">{{data | json}}</pre>
希望这可以帮到你。
答案 5 :(得分:2)
如果要格式化JSON并进行语法突出显示,可以使用ng-prettyjson
指令。 See the npm package.
以下是如何使用它:<pre pretty-json="jsonObject"></pre>