Tengo una aplicación AngularJS, que recopila datos de la entrada, transforma un modelo en una cadena JSON.stringify()y le permite al usuario editar este modelo de tal manera que los campos de entrada se actualizan si el <textarea>elemento se actualiza y viceversa. Algún tipo de enlace bidireccional :)
El problema es que la cadena en sí se ve fea y me gustaría formatearla para que se vea así:

Y no como se ve ahora:

¿Alguna idea de cómo se puede lograr esto? Si necesita información adicional, no dude en preguntar. Cada respuesta es muy apreciada y respondida de inmediato.
Gracias.
PD: Supongo que esto debería ser algún tipo de directiva o un filtro personalizado. Los datos en sí NO DEBEN modificarse, solo la salida.
                    
                        javascript
                                json
                                string
                                angularjs
                                formatting
                                
                    
                    
                        amenoire
fuente
                
                fuente

$watch(basado en la respuesta a la pregunta anterior) sobre el modelo de área de texto, ¿puede hacerconsole.log()y ver qué valor obtiene en la cadena para la tecla enter? Creo que es "/ n"Respuestas:
Puede utilizar un parámetro opcional de
JSON.stringify()Por ejemplo:
le dará el siguiente resultado:
fuente
$$hashKeyusos angulares de la propiedad para el seguimiento del modelo internoJSON.stringify(object, null, 2)donde 2 es el número de caracteres de espacio en blanco.Angular tiene una función incorporada
filterpara mostrarJSONTenga en cuenta el uso de la
preetiqueta -etiqueta para conservar espacios en blanco y saltos de líneaManifestación:
También hay un
angular.toJsonmétodo, pero no he jugado con eso ( Docs )fuente
<pre>etiqueta no debe tener lawhite-spacepropiedad establecida ennormalono-wrap. De lo contrario, su JSON no se sangraría como desea.Si está buscando renderizar JSON como HTML y se puede contraer / abrir, puede usar esta directiva que acabo de hacer para renderizarlo bien:
https://github.com/mohsen1/json-formatter/
fuente
Además del filtro angular
jsonya mencionado, también existe la función angulartoJson().El segundo parámetro de esta función le permite activar la impresión bonita y establecer el número de espacios a utilizar.
fuente
Supongo que quieres usar para editar el texto json. Entonces puedes usar el método de ivarni:
{{datos | json}}y agregue un atributo adicional para hacerEspero que esto le pueda ayudar.
fuente
Si desea formatear el JSON y también resaltar la sintaxis, puede usar la
ng-prettyjsondirectiva. Vea el paquete npm.Así es como se usa:
<pre pretty-json="jsonObject"></pre>fuente