首页 > 解决方案 > 订阅后如何将 JSON 值保存在变量/数组中?

问题描述

我正在接收如下所示的 JSON文件

{streetAddress: "Kosterlijand 20", postalCode: "3980", city: "Bunnik", country: "Netherlands"}

文件的长度不同,但结构始终是

{key: "string value", key: "string value", etc...}

我正在尝试订阅以获取该数据,但无论我如何尝试订阅,我都无法以任何方式存储数据。如果我只使用这个:

this.service.getEntityDetails()
        .subscribe(data => console.log(data));

我可以在控制台中看到:

{streetAddress: "Kosterlijand 20", postalCode: "3980", city: "Bunnik", country: "Netherlands"}

但是,如果我尝试其他任何方法,例如:

    public test: any[];
    public test1: any[]=[];
    public test2: string[];
    public test3: string[]=[];
    public test4: {};

    constructor(service:Service){}
    this.service.getEntityDetails()
    .subscribe(data => {
        test=data;
        test1=data;
        test2=data;
        test3=data;
        test4=data;

        console.log("test:"+test+", test1: "+test1+", test2: "+test2+", test3: "+test3);
    });
 }

控制台中的输出始终相同:

test:[object Object], test1: [object Object], test2: [object Object], test3: [object Object] test4[object Object]

我想让它按工作方式KeyValuePipe工作。

但是因为我不能以任何方式保存这些值,所以我不能使用管道。有人可以帮我解决这个问题吗?

如有必要,我可以提供更多信息。

标签: arraysjsonangulartypescript

解决方案


所以,为了解释一些事情......

public someRandomData: Array<any> = [];

  this.service.getEntityDetails()
    .subscribe(data => {
        someRandomData=data;
    });

而已。您已经成功存储了您想要获取的值。

如果您真的想在字符串中记录对象的控制台日志,您可以参考对象所具有的字段...

console.log(this.someRandomData[0].fieldOfYourJSONObject)

你写了一个函数来遍历你的对象的键。但既然你只要求存储你的对象,那就足够了。


推荐阅读