我有一个json,如下所示。
[{"id":"1","date":"2020-02-21","status":"present","studentid":"1"},{"id":"2","date":"2020-02-24","status":"present","studentid":"1"}]
如何使用作为http请求订阅的angular将日期存储在变量中。我无法储存。这是我尝试过的。
date:string=[];
sendPostRequest() {
var options = { headers: new HttpHeaders({ 'Content-Type': 'text/plain' }) };
var count=0;
this.http.post("http://localhost/android/Api.php?apicall=getattendance", this.postData,options).
pipe(map(res => res.results || []))
.subscribe(data => {
this.date=data['date'];
});
请帮帮我。我刚接触棱角分明。
您得到的响应是一个数组。将您的回复转换为日期。请参考下面的代码,您将从中获得回复的日期。
date:string=[];
sendPostRequest() {
var options = { headers: new HttpHeaders({ 'Content-Type': 'text/plain' }) };
var count=0;
this.http.post("http://localhost/android/Api.php?apicall=getattendance", this.postData,options).
pipe(map(res => res.results || []))
.subscribe(data => {
this.date=data.map(ele => ele.date);
});
示例,
const data = [{"id":"1","date":"2020-02-21","status":"present","studentid":"1"},{"id":"2","date":"2020-02-24","status":"present","studentid":"1"}];
const date = data.map(ele => ele.date);
console.log(date);
循环这个json并将其放入一个新数组中。
const json = [{ "id": "1", "date": "2020-02-21", "status": "present", "studentid": "1" }, { "id": "2", "date": "2020-02-24", "status": "present", "studentid": "1" }];
const date = [];
json.forEach((item) => {
date.push({
date: item.date
})
})
console.log(date);
您的日期为字符串格式,并且它是一个单一值,并将日期变量声明为Array[]您只需要将日期声明为字符串变量
日期:字符串='';或日期='';
首先要很好地理解JSON的结构。为此,您可以免费使用在线JSON解析器:
https://codebeautify.org/jsonviewer
https://jsonformatter.org/
http://json.parser.online.fr/
如果你看到你的数据在结构之后,它是;
[
{
"id": "1",
"date": "2020-02-21",
"status": "present",
"studentid": "1"
},
{
"id": "2",
"date": "2020-02-24",
"status": "present",
"studentid": "1"
}
]
有一个对象数组。因此,基本上,您也需要遍历数组,访问数组的每个索引,然后选择所需的键值对。
@wsc的回答很好地指出了代码。
您的响应是一个对象数组。将日期变量定义为数据:string='';
并尝试此.date=data[0].date
如果你有任何错误,请更新。
date:string=[];
sendPostRequest() {
var options = { headers: new HttpHeaders({ 'Content-Type': 'text/plain' }) };
var count=0;
this.http.post("http://localhost/android/Api.php?apicall=getattendance", this.postData,options).
pipe(map(res => res.results || []))
.subscribe(data => {
data.forEach(element=>{
this.date.push(element.date);
})
});
我认为你的问题与这些已经提出的问题类似。如果你想把它存储在一个变量中,你可以看看这个:把API的数据存储在变量[Angular]中
如果您想将其转换为日期格式,请查看:如何使用角度2 将当前日期转换为YYYY-MM-DD格式
更新
我认为唯一的问题是没有正确地迭代。这样的事情就可以了。
迭代您的响应并将元素推送到您的列表
.subscribe(data => {
data.forEach((item) => {
date.push({
date: item.date
})
})
})