В AngularJS формат выходных данных JSON строку
у меня есть приложение AngularJS, которое собирает данные из входных данных, преобразует модель в строку с помощью JSON.stringify()
и позволяет пользователю редактировать эту модель таким образом, что поля ввода обновляются, если <textarea>
элемент обновляется, и наоборот. Какая-то двусторонняя привязка :)
проблема в том, что сама строка выглядит некрасиво, и я хотел бы отформатировать ее так, чтобы она выглядела так:
и не так, как это выглядит сейчас:
любой идеи, как это может быть завершено? Если вам нужна дополнительная информация - не стесняйтесь спрашивать. Каждый ответ высоко ценится и отвечает немедленно.
спасибо.
P. S. Я предполагаю, что это должна быть какая-то директива или пользовательский фильтр. Сами данные не должны быть изменены, только выходные данные.
6 ответов:
вы можете использовать необязательный параметр
JSON.stringify()
JSON.stringify(value[, replacer [, space]])
параметры
- стоимостью значение для преобразования в строку JSON.
- replacer если функция, преобразует значения и возникающие свойства строкового представления; если массив, задает набор свойств, включенных в объекты в поле последняя строка. Подробное описание замена функция предоставлено в статье руководства javaScript с использованием собственного JSON.
- пробел Вызывает красивую печать результирующей строки.
например:
JSON.stringify({a:1,b:2,c:{d:3, e:4}},null," ")
даст вам следующий результат:
"{ "a": 1, "b": 2, "c": { "d": 3, "e": 4 } }"
угловой имеет встроенный
filter
показываетJSON
<pre>{{data | json}}</pre>
обратите внимание на использование
pre
-тег для сохранения пробелов и разрывов строкDemo:
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 как HTML, и его можно свернуть/открыть, вы можете использовать эту директиву, которую я только что сделал, чтобы сделать ее красиво:
кроме угловое
json
filter уже упоминалось, есть также угловоеtoJson()
функции.angular.toJson(obj, pretty);
второй параметр этой функции позволяет включить красивую печать и установить количество используемых пробелов.
если установлено значение true, вывод JSON будет содержать новые строки и пробелы. Если задано целое число, вывод JSON будет содержать столько пробелов на отступ.
(по умолчанию: 2)