화면에 [Object Object]가 아닌 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

웹앱의 개체 내부에있는 내용을 보려면 구성 요소 HTML 템플릿에서 json 파이프 를 사용하십시오 . 예를 들면 다음과 같습니다.

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

Angular 4.3.2를 사용하여 테스트되고 유효합니다.


당신은 각 1 일에서 내가 필요로 한 JSON 더미 ... :) 변경 감사합니다
foralobo

@foralobo Json Pipe는 Angular 1에서도 사용 가능했습니다.)
Ilker Cat

대박! 감사합니다.
moreirapontocom


33

JSON 객체를 반복하려면 : Angluar (6.0.0+)에서 이제 파이프를 제공합니다 keyvalue.

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

또한 읽으십시오

JSON 만 표시하려면

{{ object | json }}

1
두 가지가 모두 있기 때문에 Fav 대답은 두 가지가 모두 필요할 것입니다. 간단한 변수의 경우 "just 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

@Oddleif-네. 또한 정보를보다 편리하게 표시 할 수있는 매우 유용한 뷰어에 대한 참조를 추가했습니다.
Alexei

5

값을 얻을 수있는 두 가지 방법이 있습니다.

  1. 점 표기법 (obj.property)을 사용하여 객체의 속성에 액세스합니다.
  2. 예를 들어 obj [ "property"]와 같은 키 값을 전달하여 객체의 속성에 액세스합니다.


2

새 구문으로 다른 사람의 답변 업데이트 :

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

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.