如何将通过post订阅的angular变量存储为json



我有一个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
})
})
})

最新更新