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

How to store a variable in angular which is being subscribed via post as json?

我有一个像这样的json

[{"id":"1","date":"2020-02-21","status":"present","studentid":"1"},{"id":"2","date":"2020-02-24","status":"present","studentid":"1"}]

如何使用 angular 将日期存储在变量中,该变量被订阅为 http request.I 我无法存储。这是我尝试过的。

 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'];


  });

请帮助 me.I 我是 angular 的新手。

你的日期是字符串格式,它是一个单一的值,将你的日期变量声明为数组[]你只需要将你的日期声明为字符串变量

日期:字符串=''; 要么 日期 = '';

遍历此 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);

您收到的响应是一个数组。将您的回复转换为日期。请参考下面的代码,您将从中获取回复日期。

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);

我认为你的问题与这些已经提出的问题类似。如果你想把它存储在一个变量中,你可以看看这个:

如果您想将其转换为日期格式,请查看: how to convert current date to YYYY-MM-DD format with angular 2

更新

我认为唯一的问题是没有正确迭代。像这样就好了。

遍历您的响应并将元素推送到您的列表

.subscribe(data => {
  data.forEach((item) => {
      date.push({
          date: item.date
      })
  })
})

首先了解您的 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 回答很好地指出了代码。

您的响应是一组对象。 将日期变量定义为 data:string='';

并尝试 this.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);
})

});