0
votes

Mettre en forme la chaîne au format JSON dans la zone de texte?

J'ai cette chaîne:

<textarea [ngModel]="obj.request | json" disabled></textarea>

j'essaie d'avoir un joli format json dans textarea:

const myObjStr = JSON.stringify(this.request);
this.obj.request = JSON.parse(myObjStr);



  <textarea [ngModel]="obj.request" disabled></textarea>

Mais cela ne fonctionne pas.

J'ai aussi essayé ceci:

 <textarea [ngModel]="request | json" disabled></textarea>

et

"{filter: [{\"attribute\":\"quoteitemnum\",\"filterOperation\":\"EQUALS\",\"expressionValue\":\"581-2019-2\"}]}"

Mais ça ne marche pas. Une suggestion?


2 commentaires

Votre chaîne comporte des barres obliques inverses. Avez-vous essayé de les supprimer?


Votre chaîne est un peu complexe, comme @Lok l'a dit, avez-vous essayé de les supprimer?


4 Réponses :


2
votes

Je pense que la chaîne est une chaîne JSON non valide. Lorsque j'ai utilisé la chaîne ci-dessous, cela fonctionne très bien avec le tube json . La clé des filtres n'est pas échappée ( \ "filter \" )

"{ \"filter\":[{ \"attribute\":\"quoteitemnum\",\"filterOperation\":\"EQUALS\",\"expressionValue\":\"581-2019-2\"}]}"

https://stackblitz.com/edit/angular-czcsuj


3 commentaires

comment puis-je le rendre valide parce que je l'obtiens du backend comme ça je ne peux pas le changer sur le backend


Vous pouvez faire une chaîne de remplacement string.replace ('filter', '\ "filter \"') .


Ma suggestion est de résoudre le problème sur le backend. Si vous ne pouvez absolument pas, vous pouvez suivre les suggestions de @Sam ou vous pouvez analyser la valeur du tableau qui est assignée au filtre, puis reconstruire l'objet. Quelque chose comme ça ... stackblitz.com/edit/angular-yjzteb



0
votes

Je pense que la chaîne donnée devrait être quelque chose comme ci-dessous,

  `<pre>{{rapidPageValue | json}}</pre>`

Vous n'avez pas échappé au filtre. Et si la chaîne json est correcte, le json pipe devrait fonctionner correctement.

<textarea style="background-color:black;color:white;"rows="30" cols="50">  
  {{rapidPageValue | json}}                           
</textarea>

Au lieu de textarea, vous pouvez également utiliser la balise pre

"{ \"filter\":[{ \"attribute\":\"quoteitemnum\",\"filterOperation\":\"EQUALS\",\"expressionValue\":\"581-2019-2\"}]}"


1 commentaires

Je reçois une chaîne comme celle du backend et je ne peux pas la modifier pour obtenir un json "valide"



0
votes

Cela devrait fonctionner:

ngOnInit() {
this.request =
  "{ \"filter\":[{ \"attribute\":\"quoteitemnum\",\"filterOperation\":\"EQUALS\",\"expressionValue\":\"581-2019-2\"}]}";

const myObjStr = JSON.stringify(JSON.parse(this.request));
this.request = JSON.parse(myObjStr);

}

Comme @Jason White l'a dit, enveloppez la chaîne avec JSON.parse avant de faire JSON. stringify

J'espère que cela aide.


0 commentaires

0
votes

vous pouvez analyser la chaîne json et utiliser la balise et le tube json

j'espère que cela vous aidera ...

https: // stackblitz. com / edit / angular-rafyyw? file = src / app / app.component.ts


0 commentaires