[英]convert a JSON to a string array in typescript
我觉得我有一个很简单的问题,但我没有得到答案......我用 JSON.parse 将来自我的服务器的响应的 .text() 解析为 JSON。 我实际上可以通过以下方式访问该 JSON 的值: this.temp[0].name
。 现在我只想遍历该 JSON 并将值推送到字符串数组中。 但我怎样才能做到这一点?
当我尝试使用for...of
,编译器想要一个字符串或一个数组,而不是一个 JSON。 当我尝试使用for...in
它实际上并没有进入循环。
这是一些我可以正常访问的代码:
this._pS.getAllProjects()
.subscribe(data => this.temp = JSON.parse(data.text()),
err => console.log(err),
() => console.log("hello " + this.temp[0].name + this.temp[1].name));
当我在 .stringify() 之后打印出来时:
this._pS.getAllProjects()
.subscribe(data => this.temp = JSON.stringify(data),
err => console.log(err),
() => console.log("hello " + this.temp));
我在浏览器控制台中得到了这个:
{"_body":"[{\"name\":\"Projekt A\"},{\"name\":\"Projekt XYZ\"}]",
"status":200,
"ok":true,
"statusText":"Ok",
"headers":{"Content-Type":["application/json; charset=utf-8"]},
"type":2,
"url":"http://127.0.0.1:3000/api/getAllProjectNames"}
tl; dr:如何将正文的文本部分中的值提取到字符串数组中?
提前致谢
如果响应是您包含的内容,则很简单:
JSON.parse(data.text()).forEach(item => {
console.log(item.name);
});
由于您的身体是此接口的对象数组:
interface ObjectInResponseArray {
name: string;
}
我会尝试类似的东西
this._pS.getAllProjects()
.subscribe(resp => {
this.temp = resp.json();
console.log("hello " + this.temp[0].name + this.temp[1].name);
},
err => console.log(err),
() => console.log("getAllProjectsDone")
)
我希望这有帮助
使用map
:
this._pS.getAllProjects()
.map(resp => resp.json())
.map(json => json.map(project => project.name)).subscribe(...);
首先,您将 JSON 和对象混为一谈。 JSON 是一种用于传输数据的文本格式。 解析它 ( JSON.parse
) 后,您将获得一个对象或数组,具体取决于 JSON 的内容。
var json = "{\"key\": \"value\" }";
var object = JSON.parse(json);
json = "[1, 2, \"three\"]";
var array = JSON.parse(json);
接下来,您似乎已经有了一个对象。 如果您执行JSON.stringify
,则您将对象转换为字符串。 所以你可以直接访问你的data
对象。 无需以一种或另一种方式转换。
console.log(data._body[0]);
你熟悉for
循环吗? 它们是在 JavaScript(实际上也是大多数语言)中迭代数组的最常见方式。 例如:
var objs = [
{
name: 'Bugs'
},
{
name: 'Bunny'
}
];
for (var i = 0; i < objs.length; i++) {
var obj = objs[i];
console.log(obj.name);
}
鉴于所有这些,您应该能够遍历data._body
数组并访问每个元素的name
属性。
由于您的问题有点不清楚,因此您可能需要遍历data.text()
的解析内容。
var objs = JSON.parse(data.text());
// Use a simple loop like above
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.