如何在屏幕上显示JSON表示而不是[Object Object]

for*_*obo 103 json angular

我正在制作一个测试版的AngularJS 2应用程序.我想在我的页面中显示一个对象的JSON表示,但它显示[Object Object]而不是 {key1:value1 ....}

从我可以使用的组件:

get example() {return JSON.stringify(this.myObject)};
Run Code Online (Sandbox Code Playgroud)

然后在模板中:

{{example}}
Run Code Online (Sandbox Code Playgroud)

但如果我有一个对象数组并想打印这些对象的列表,我该怎么做呢?

使用:

<ul>
   <li *ngFor="#obj of myArray">{{obj}}</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

结果如下:

- [Object Object]
- [Object Object]
- [Object Object]
- [Object Object]

等等.有没有办法将它们显示为JSON?

Vla*_*vic 179

如果要查看Web应用程序中对象内部的内容,请在组件HTML模板中使用json管道,例如:

<li *ngFor="let obj of myArray">{{obj | json}}</li>
Run Code Online (Sandbox Code Playgroud)

使用Angular 4.3.2进行测试和有效.


gan*_*lje 60

我们可以使用角管json

{{ jsonObject | json }}
Run Code Online (Sandbox Code Playgroud)


Viv*_*shi 24

循环访问JSON对象:在Angluar(6.0.0+)中,现在它们提供了管道keyvalue:

<div *ngFor="let item of object| keyvalue">
  {{ item.key }} - {{ item.value }}
</div>
Run Code Online (Sandbox Code Playgroud)

请继续阅读

只显示JSON

{{ object | json }}
Run Code Online (Sandbox Code Playgroud)

  • 最喜欢的答案是因为它两者都有,而且你可能需要两者:“just json”用于简单变量。但对于具有循环引用的表单控件之类的任何内容,您将需要将循环作为第一个选项提供。两者在 Angular9 中仍然是正确的语法。 (2认同)

Ale*_*xei 11

可以在不使用的情况下实现将对象内容转储为JSON ngFor.例:

宾语

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

标记

<div [innerHTML]="theObject | json"></div>
Run Code Online (Sandbox Code Playgroud)

输出(通过美化器以获得更好的可读性,否则输出为单行)

{
  "simpleProp": 1,
  "complexProp": {
    "InnerProp1": "test1",
    "InnerProp2": "test2"
  },
  "arrayProp": [
    1,
    2,
    3,
    4
  ]
}
Run Code Online (Sandbox Code Playgroud)

我还发现了一个JSON格式化程序和查看器,它显示更大的JSON数据更具可读性(类似于JSONView Chrome扩展):https://www.npmjs.com/package/ngx-json-viewer

<ngx-json-viewer [json]="someObject" [expanded]="false"></ngx-json-viewer>
Run Code Online (Sandbox Code Playgroud)


Har*_*uja 5

您可以通过两种方式获取值:-

  1. 使用点表示法 (obj.property) 访问对象的属性。
  2. 通过传入键值来访问对象的属性,例如 obj["property"]


Jay*_*ria 5

<li *ngFor="let obj of myArray">{{obj | json}}</li>
Run Code Online (Sandbox Code Playgroud)