将JSON转换为typescript中的字符串数组
convert a JSON to a string array in typescript
我觉得我有一个很简单的问题,但我就是找不到答案。。。我使用JSON.parse将来自服务器的响应的.text()解析为JSON。实际上,我可以用this.temp[0].name
访问JSON的值。现在我只想对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;
}
首先,您要混合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
我会尝试类似的东西
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转换为typescript中的字符串数组
- 在Javascript中将一个值和字符串数组转换为if语句
- 如何将正则表达式包含到字符串数组中
- JavaScript:将字符串数组转换为文本区域
- Knockout中的字符串数组
- 拆分字符串数组(JavaScript)后未定义
- 使用Javascript获取两个字符串之间的字符串数组
- 打印从Spring MVC Controller发送的字符串数组只显示“;toJSON”;在javascript中
- 将一个字符串数组解析为一个新的数组javascript
- AngularJS - 从字符串数组中连续更改文本
- 使用字符串数组中的字符填充 HTML 表
- 如何在 Javascript 中将字符串数组列表插入到表行中
- 创建二维字符串数组
- 如何从字符串数组中获取子字符串数组
- 如何将字符串数组转换为简单数组
- 按字母顺序、数字顺序和特殊字符对字符串数组进行排序
- 如何从字符串数组中获得8个随机唯一元素
- json_encode($myVar);正在给出地图,我想要一个字符串数组
- 函数,返回javascript中两个字符串数组的差值
- Javascript字符串数组转换为用逗号分隔的多个字符串