画面に[オブジェクトオブジェクト]ではなくJSON表現を表示する方法


122

AngularJS 2アプリケーションをベータ版で作成しています。ページにオブジェクトのJSON表現を表示したいのですが、表示され[Object Object]ていない {key1:value1 ....}

私が使用できるコンポーネントから:

get example() {return JSON.stringify(this.myObject)};

そしてテンプレートで:

{{example}}

しかし、オブジェクトの配列があり、これらのオブジェクトのリストを印刷したい場合、どうすればよいですか?

使用:

<ul>
   <li *ngFor="#obj of myArray">{{obj}}</li>
</ul>

結果は次のようになります:

-[オブジェクトオブジェクト]
-[オブジェクトオブジェクト]
-[オブジェクトオブジェクト]
-[オブジェクトオブジェクト]

等々。それらをJSONとして表示する方法はありますか?

回答:


199

Webアプリのオブジェクト内にあるものを確認する場合は、コンポーネントのHTMLテンプレートでjsonパイプを使用します。次に例を示します。

<li *ngFor="let obj of myArray">{{obj | json}}</li>

Angular 4.3.2を使用してテストされ、有効です。


ありがとう、jsonパイルが必要でした... angular 1から何かが変更されました:)
foralobo

@foralobo Json PipeはAngular 1でも利用可能でした;)
Ilker Cat

驚くばかり!ありがとうございました。
moreirapontocom


32

JSONオブジェクトをループ処理するには:Angluar(6.0.0以降)では、パイプを提供しますkeyvalue

<div *ngFor="let item of object| keyvalue">
  {{ item.key }} - {{ item.value }}
</div>

また読む

JSONを表示するだけ

{{ object | json }}

1
両方があり、おそらく両方が必要になるため、Favの回答:単純な変数の場合は「JSONのみ」。しかし、循環参照を持つフォームコントロールのようなものについては、最初のオプションとして提示されるループが必要になります。Angular9ではどちらも正しい構文です。
Anders8

11

オブジェクトコンテンツをJSONとしてダンプすることは、を使用せずに実現できますngFor。例:

オブジェクト

export class SomeComponent implements OnInit {
    public theObject: any = {
        simpleProp: 1,
        complexProp: {
            InnerProp1: "test1",
            InnerProp2: "test2"
        },
        arrayProp: [1, 2, 3, 4]
    };

マークアップ

<div [innerHTML]="theObject | json"></div>

出力(読みやすくするために美容器を通過します。それ以外の場合は単一行で出力されます)

{
  "simpleProp": 1,
  "complexProp": {
    "InnerProp1": "test1",
    "InnerProp2": "test2"
  },
  "arrayProp": [
    1,
    2,
    3,
    4
  ]
}

さらに大きなJSONデータを読みやすく表示するJSONフォーマッタとビューアも発見しました(JSONView Chrome拡張機能と同様):https ://www.npmjs.com/package/ngx-json-viewer

<ngx-json-viewer [json]="someObject" [expanded]="false"></ngx-json-viewer>

1
また、divからpreタグに変更すると、適切に自動的にフォーマットされます。
Oddleif 2018年

@Oddleif-はい。また、情報をより便利に表示できる非常に便利なビューアへの参照も追加しました。
Alexei

5

値を取得するには2つの方法があります。

  1. ドット表記(obj.property)を使用してオブジェクトのプロパティにアクセスします。
  2. obj ["property"]などのキー値を渡して、オブジェクトのプロパティにアクセスします



0

オブジェクトの配列があり、コンポーネントでそれらを逆シリアル化する場合

get example() { this.arrayOfObject.map(i => JSON.stringify (i) ) };

次にテンプレートで

<ul>
   <li *ngFor="obj of example">{{obj}}</li>
</ul>

0
this.http.get<any>('http://192.168.1.15:4000/GetPriority')
  .subscribe(response => 
  {
  this.records=JSON.stringify(response) // impoprtant
  console.log("records"+this.records)
  });

3
ねえ、あなたが書いたものを改善するために、あなたの答えにいくつかの説明を追加して、概念にあまり詳しくない読者があなたの決定を理解できるようにすることができます。
AplusKminus
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.