如何从我使用 angular6 的 api 访问 JSON 数据响应

Posted

技术标签:

【中文标题】如何从我使用 angular6 的 api 访问 JSON 数据响应【英文标题】:how to access the JSON data response from the api I am using angular6 【发布时间】:2020-01-19 08:24:01 【问题描述】:

这里我使用的是angualar6和。我从 API 中获取数据并在 typescript 中创建了一个模型类。我不知道我在哪里做错了。我是新来的。

 order.model.ts

 export interface OrderModel 
  orderList: OrderList[];
  orderSearch: OrderSearch;
  role:  categoryId: string; categoryTitle: string ;


export interface OrderSearch 
  userId: string;
  userRoleId: string;


export interface OrderList 
  orderId: string;
  orderMode: 
    categoryId: string;
    categoryTitle: string;
  ;
  orderStatus: 
    ATVP: string;
    creator:  createDate: string ;
    status: 
      categoryId: string;
      categoryTitle: string;
    ;
    statusId: string;
    statusParentId: string;
  ;
  payment: 
    paymentAmount: number;
    paymentId: string;
    paymentMode: 
      categoryId: string;
      categoryTitle: string;
    ;
    paymentStatus: 
      statusId: string;
      statusParentId: string;
      status: 
        categoryId: string;
        categoryTitle: string;
      ;
    ;
    payeePaymentInfo: 
      paymentInfo: string;
      paymentMode: 
        categoryId: string;
        categoryTitle: string;
      ;
    [];
  ;
  creator: 
    createDate: string;
    creatorId: string;
  ;
  deliveryInfo: 
    deliveryStatus: 
      ATVP: string;
      creator:  createDate: string ;
      status:  categoryId: string; categoryTitle: string ;
      statusId: string;
      statusParentId: string;
    ;
  ;
  orderPricing: 
    price: number;
    priceId: string;
    priceText: string;
    priceType:  categoryId: string; categoryTitle: string ;
    pricingRef: string;
    quantity: number;
    rentUnit:  categoryId: string; categoryTitle: string ;
    statusId: string;
    unit:  categoryId: string; categoryTitle: string ;
  ;

这是我的 component.ts 文件

@Component(
  selector   : 'app-item-detail',
  templateUrl: './item-detail.component.html',
  styleUrls  : ['./item-detail.component.scss']
)
export class ItemDetailComponent implements OnInit 
  id: number;
  price: number;
  orderDetail: OrderModel;
  ordersList:OrdersList[]=[];
  orderList:OrderList[]=[];




  message:string;
  constructor(private campusservice: OrdersService, private _campusHaatService: OrdersService, private route: ActivatedRoute) 
    this.route.params.subscribe((r) => this.id = r['id']);
  

  ngOnInit() 

    this._campusHaatService.currentMessage.subscribe(message => this.message = message);
    console.log(this.price,'price')
    console.log(this.id, 'id');
//TODO Api calling Order by Id
    const data = 
      "orderLoadType": 3,
      "userId": "",
      "creator": 
        "id": "5794",
        "APIKey": "63923f49e5241343",
        "createDate": "2019-03-22 01:56:25.0",
        "creatorId": "402"
      ,
      "start":0,
      "limit":10,
      "orderId":"1758",
      "loadType": 0
    

    this.campusservice.orderDetail(data).subscribe((r) => 
      // console.log(r, 'detail');
      console.log('detail',r);
      this.orderDetail = r['detail'];
      this.ordersList = r['ordersList'];
      this.orderDetail.ordersList.

    );

  


getOrderMode() 

  return this.orderDetail.ordersList.ordermode.CategoryTitle;




Order.Service.ts


@Injectable()
export class OrdersService extends CampusHaatAdminService 

  private messageSource = new BehaviorSubject('');
  currentMessage = this.messageSource.asObservable();


  constructor(public http: HttpClient,
              private router: Router) 
    super(http);
  




  orderList(data): Observable<OrderModel[]> 
    data = 
      ...data,
      'orderLoadType': 3
    ;
    return this.post('/orders/listOrders', false, data)
      .pipe(map(res => res['ordersList']));
  

  orderDetail(data) 
    return this.post('/orders/listOrders', false
      , data);
  


API 响应



    "type": "ordersResponse",
    "baseResponse": 
        "message": "Order retrieved successfully!",
        "statusCode": "200"
    ,
    "ordersList": [
        
            "orderList": [
                
                    "adsList": [],
                    "avgTime": 0,
                    "buyer": ...,
                    "creator": ...,
                    "deliveryInfo": ...,
                    "expecTimeLowerLimit": 0,
                    "expecTimeUpperLimit": 0,
                    "maxTime": 0,
                    "minTime": 0,
                    "orderId": "1758",
                    "orderMode": 
                        "message": 
                            "actions": [],
                            "msgSize": 0
                        ,
                        "categoryId": "621",
                        "categoryList": [],
                        "categoryTitle": "Deliver"
                    ,
                    "orderPricing": ...,
                    "orderStatus": ...,
                    "payment": ...,
                    "persons": [...],
                    "productList": []
                
            ],
           "orderSearch":...,
            "role":...
         
    ]

我想在api中显示订单模式的类别标题 我是角度的新手。请帮帮我。 提前致谢。

【问题讨论】:

【参考方案1】:

根据您的代码和 api 响应,我认为您想要这样的东西



@Component(
  selector   : 'app-item-detail',
  templateUrl: './item-detail.component.html',
  styleUrls  : ['./item-detail.component.scss']
)
export class ItemDetailComponent implements OnInit 
  id: number;
  price: number;
  orderDetail: OrderModel;
  orderList:OrderList[]=[];
  orderId:number;
  orderStatus:string;
  orderMode:string;
  orderAmount:number;
  orderDate:string;


  constructor(private campusservice: OrdersService, private _campusHaatService: OrdersService, private route: ActivatedRoute) 
    this.route.params.subscribe((r) => this.id = r['id']);
  

  ngOnInit() 


    // console.log(this.price,'price')
    console.log(this.id, 'id');
//TODO Api calling Order by Id
    const data = 
      "orderLoadType": 3,
      "userId": "",
      "creator": 
        "id": "5794",
        "APIKey": "63923f49e5241343",
        "createDate": "2019-03-22 01:56:25.0",
        "creatorId": "402"
      ,
      "start":0,
      "limit":10,
      "orderId":"",
      "loadType": 0
    

    this.campusservice.orderDetail(data).subscribe((r) => 
      this.orderList = r['ordersList'][0]['orderList'];
      let orderData = this.orderList.filter((order)=>order.orderId==this.id.toString());

      if(orderData.length>=1)
        this.orderAmount = orderData[0]['payment']['paymentAmount'];
        this.orderDate = orderData[0]['creator']['createDate'];
        this.orderStatus = orderData[0]['orderStatus']['status']['categoryTitle'];
      
    );

  



【讨论】:

以上是关于如何从我使用 angular6 的 api 访问 JSON 数据响应的主要内容,如果未能解决你的问题,请参考以下文章

如何从我的 Unity Android 应用程序访问 Spotify API?

如何从我的 android 设备访问我的本地 REST api?

如何从我的应用程序访问 google drive api

如何使用 jwt 在 Angular 6 和 web api 中刷新令牌?

如何从我的项目访问我的MongoDB实例到我的xunit测试项目类?

我需要有一个可以从我的 API 中的任何位置访问但不能从使用 API 的应用程序访问的 java 方法