使用邮递员,我可以在正文中使用以下json获得正确的响应:

{
    "cpu": {
        "filters": [
            ]
    }
}


在我的Angular 2服务中,我发布了这样的请求:

import { Injectable } from '@angular/core';
import { Http, Headers, RequestOptions, Response } from '@angular/http';
import { BaseService } from './base.service';
import { Observable } from 'rxjs/Observable';
import { Cpu } from '../entities/cpu';
import { PostObject } from '../entities/post-object';
import { CPU } from '../datasource/database-data';
import 'rxjs/add/operator/map';

@Injectable()
export class CpuService extends BaseService {
    postObject: PostObject;

    constructor(private http: Http) {
      super();
    }

        getCpus(): void {
        this.postObject = new PostObject();
        console.log(JSON.stringify(this.postObject));
            this.http.post(this.getUrl('/searchCPU'), JSON.stringify(this.postObject))
                .subscribe((result: any) =>
                    console.log(result);
                    return result
                });
        }
}`


PostObject:

export class PostObject {
    cpu: {
        filters: string[]
    }
}


当我控制台记录我的postObject对象时,它是空的...?也许this.postObject = new PostObject();是错误的..?

最佳答案

如果您要发送类,则类需要一个构造函数。我不知道发送空对象的用例,但是您也可以跳过类并手动创建对象。不过,这不好维护,但是可以通过以下方式实现:

this.postObject = {cpu:{filters:[]}}


如果您要上课,您将有两个:

export class PostObject {
    constructor(public cpu: Cpu) {}
}

export class Cpu {
    constructor(public filters: string[]) {}
}


并创建一个新的PostObject,如下所示:

this.postObject = new PostObject(new Cpu([]))


两种方法都能达到您想要的效果,即:

{
    "cpu": {
        "filters": [
            ]
    }
}

10-06 02:52