Eu tenho um aplicativo AngularJS, que coleta dados de entrada, transforma um modelo em uma string usando JSON.stringify()
e permite que um usuário edite este modelo de forma que os campos de entrada sejam atualizados se o <textarea>
elemento for atualizado e vice-versa. Algum tipo de ligação bidirecional :)
O problema é que a própria string parece feia e eu gostaria de formatá-la assim:
E não é o que parece agora:
Alguma ideia de como isso pode ser feito? Se você precisar de alguma informação adicional - não hesite em perguntar. Cada resposta é muito apreciada e respondida imediatamente.
Obrigado.
PS Acho que isso deve ser algum tipo de diretiva ou um filtro personalizado. Os próprios dados NÃO DEVEM ser alterados, apenas a saída.
javascript
json
string
angularjs
formatting
amenoire
fonte
fonte
$watch
(com base na resposta da pergunta anterior) sobre o modelo textarea, você pode fazer umconsole.log()
e ver qual valor obtém na string para a tecla enter - acho que é "/ n"Respostas:
Você pode usar um parâmetro opcional de
JSON.stringify()
Por exemplo:
lhe dará o seguinte resultado:
fonte
$$hashKey
usos angulares de propriedade para rastreamento de modelo internoJSON.stringify(object, null, 2)
onde 2 é o número de caracteres de espaço em branco.O Angular tem um recurso embutido
filter
para mostrarJSON
Observe o uso da
pre
-tag para conservar espaços em branco e quebras de linhaDemo:
Também tem um
angular.toJson
método, mas não brinquei com ele ( Docs )fonte
<pre>
tag não deve ter awhite-space
propriedade definida comonormal
ouno-wrap
. Caso contrário, seu JSON não seria recuado como você deseja.Se você está procurando renderizar JSON como HTML e ele pode ser recolhido / aberto, você pode usar esta diretiva que acabei de criar para renderizá-lo bem:
https://github.com/mohsen1/json-formatter/
fonte
Além do filtro angular
json
já mencionado, existe também a função angulartoJson()
.O segundo parâmetro desta função permite ativar a impressão bonita e definir o número de espaços a serem usados.
fonte
Eu acho que você deseja usar para editar o texto json. Então você pode usar o método do ivarni:
e adicionar um atributo de adição para fazerEspero que isso possa ajudá-lo.
fonte
Se você deseja formatar o JSON e também realçar a sintaxe, pode usar a
ng-prettyjson
diretiva. Veja o pacote npm.Aqui está como usá-lo:
<pre pretty-json="jsonObject"></pre>
fonte