2016-08-04 6 views
0

私はリクエストを送信し、APIからの応答を処理するAPIクラスを作成しようとしています。 https://github.com/rest-assured/rest-assured/wiki/Usage#serialization安心 - ボディにネストされたPOJOを投稿する

{ 
    "Title": "string", 
    "Status": "string", 
    "ActFinish": "Date", 
    "ActHrs": "float", 
    "ActStart": "Date", 
    "ActualResults": "string", 
    "AssigneeUserId": "int", 
    "CustomFields": [ 
    { 
     "Id": "string", 
     "Name": "string", 
     "Value": "string" 
    } 
    ], 
    "Description": "string", 
    "EstFinish": "Date", 
    "EstHrs": "float", 
    "EstHrsRemaining": "float", 
    "EstStart": "Date", 
    "ExpectedResults": "string", 
    "FolderId": "int", 
    "FunctionalAreaCode": "string", 
    "HowFoundCode": "string", 
    "IssueCode": "string", 
    "ModuleCode": "string", 
    "PctComplete": "int", 
    "PriorityCode": "string", 
    "Resolution": "string", 
    "ResolutionCode": "string", 
    "SeverityCode": "string", 
    "SoftwareVersionCode": "string", 
    "StepsToRepro": "string" 
} 

私は休憩アシュアードドキュメントを読んで見つけたこれを行うための最善の方法は、ここに記載のPOJOである:APIの一部は、このサンプルのように、要求に添付JSON体を必要とする要求を持っています

私のPOJOは、次のようになります。

:私の現在のPOJOで

public class RequestDefectPost { 

    public String title; 
    public String status; 
    public Timestamp actFinish; 
    public float actHours; 
    public Timestamp actStart; 
    public String actualResults; 
    public int assigneeUserId; 
    public String[] customFields; 
    public String id; 
    public String name; 
    public String value; 
    public String description; 
    public Timestamp estFinish; 
    public float estHours; 
    public float estHrsRemaining; 
    public Timestamp estStart; 
    public String expectedResults; 
    public int folderId; 
    public String functionalAreaCode; 
    public String howFoundCode; 
    public String issueCode; 
    public String moduleCode; 
    public int pctComplete; 
    public String priorityCode; 
    public String resolutionCode; 
    public String severityCode; 
    public String softwareVersionCode; 
    public String stepsToRepro; 

    public RequestDefectPost(String title, String status) { 

     this.title = title; 
     this.status = status; 
    } 

    public String getTitle() { 
     return title; 
    } 

    public void setTitle(String title) { 
     this.title = title; 
    } 

    public String getStatus() { 
     return status; 
    } 

    public void setStatus(String status) { 
     this.status = status; 
    } 

    public Timestamp getActFinish() { 
     return actFinish; 
    } 

    public void setActFinish(Timestamp actFinish) { 
     this.actFinish = actFinish; 
    } 

    public float getActHours() { 
     return actHours; 
    } 

    public void setActHours(float actHours) { 
     this.actHours = actHours; 
    } 

    public Timestamp getActStart() { 
     return actStart; 
    } 

    public void setActStart(Timestamp actStart) { 
     this.actStart = actStart; 
    } 

    public String getActualResults() { 
     return actualResults; 
    } 

    public void setActualResults(String actualResults) { 
     this.actualResults = actualResults; 
    } 

    public int getAssigneeUserId() { 
     return assigneeUserId; 
    } 

    public void setAssigneeUserId(int assigneeUserId) { 
     this.assigneeUserId = assigneeUserId; 
    } 

    public String[] getCustomFields() { 
     return customFields; 
    } 

    public void setCustomFields(String id, String name, String value) { 
     this.customFields = new String[]{this.id = id, this.name = name, this.value = value}; 
    } 

    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getValue() { 
     return value; 
    } 

    public void setValue(String value) { 
     this.value = value; 
    } 

    public String getDescription() { 
     return description; 
    } 

    public void setDescription(String description) { 
     this.description = description; 
    } 

    public Timestamp getEstFinish() { 
     return estFinish; 
    } 

    public void setEstFinish(Timestamp estFinish) { 
     this.estFinish = estFinish; 
    } 

    public float getEstHours() { 
     return estHours; 
    } 

    public void setEstHours(float estHours) { 
     this.estHours = estHours; 
    } 

    public float getEstHrsRemaining() { 
     return estHrsRemaining; 
    } 

    public void setEstHrsRemaining(float estHrsRemaining) { 
     this.estHrsRemaining = estHrsRemaining; 
    } 

    public Timestamp getEstStart() { 
     return estStart; 
    } 

    public void setEstStart(Timestamp estStart) { 
     this.estStart = estStart; 
    } 

    public String getExpectedResults() { 
     return expectedResults; 
    } 

    public void setExpectedResults(String expectedResults) { 
     this.expectedResults = expectedResults; 
    } 

    public int getFolderId() { 
     return folderId; 
    } 

    public void setFolderId(int folderId) { 
     this.folderId = folderId; 
    } 

    public String getFunctionalAreaCode() { 
     return functionalAreaCode; 
    } 

    public void setFunctionalAreaCode(String functionalAreaCode) { 
     this.functionalAreaCode = functionalAreaCode; 
    } 

    public String getHowFoundCode() { 
     return howFoundCode; 
    } 

    public void setHowFoundCode(String howFoundCode) { 
     this.howFoundCode = howFoundCode; 
    } 

    public String getIssueCode() { 
     return issueCode; 
    } 

    public void setIssueCode(String issueCode) { 
     this.issueCode = issueCode; 
    } 

    public String getModuleCode() { 
     return moduleCode; 
    } 

    public void setModuleCode(String moduleCode) { 
     this.moduleCode = moduleCode; 
    } 

    public int getPctComplete() { 
     return pctComplete; 
    } 

    public void setPctComplete(int pctComplete) { 
     this.pctComplete = pctComplete; 
    } 

    public String getPriorityCode() { 
     return priorityCode; 
    } 

    public void setPriorityCode(String priorityCode) { 
     this.priorityCode = priorityCode; 
    } 

    public String getResolutionCode() { 
     return resolutionCode; 
    } 

    public void setResolutionCode(String resolutionCode) { 
     this.resolutionCode = resolutionCode; 
    } 

    public String getSeverityCode() { 
     return severityCode; 
    } 

    public void setSeverityCode(String severityCode) { 
     this.severityCode = severityCode; 
    } 

    public String getSoftwareVersionCode() { 
     return softwareVersionCode; 
    } 

    public void setSoftwareVersionCode(String softwareVersionCode) { 
     this.softwareVersionCode = softwareVersionCode; 
    } 

    public String getStepsToRepro() { 
     return stepsToRepro; 
    } 

    public void setStepsToRepro(String stepsToRepro) { 
     this.stepsToRepro = stepsToRepro; 
    } 
} 

Rest Assuredで吐き出すされたJSONは次のようになります

{ 
    "title": "Test", 
    "status": "New", 
    "actFinish": null, 
    "actHours": 0.0, 
    "actStart": null, 
    "actualResults": null, 
    "assigneeUserId": 0, 
    "customFields": [ 
    "Test", 
    "test", 
    "tesT" 
    ], 
    "id": "Test", 
    "name": "test", 
    "value": "tesT", 
    "description": null, 
    "estFinish": null, 
    "estHours": 0.0, 
    "estHrsRemaining": 0.0, 
    "estStart": null, 
    "expectedResults": null, 
    "folderId": 0, 
    "functionalAreaCode": null, 
    "howFoundCode": null, 
    "issueCode": null, 
    "moduleCode": null, 
    "pctComplete": 0, 
    "priorityCode": null, 
    "resolutionCode": null, 
    "severityCode": null, 
    "softwareVersionCode": null, 
    "stepsToRepro": null 
} 

私の質問は、サンプルJSONで概説されているように、正しく入れ子になるようにcustomFieldsを書くにはどうすればよいですか?

答えて

0

"CustomFields"を表す別のPOJOが必要です。たとえば、次のように

public class CustomFields { 
    private String Id; 
    private String Name; 
    private String Value; 

    <getters and setters> 
} 

List<CustomFields> CustomFieldsの代わりString[] customFieldsを使用しています。また、JSONの例ではプロパティ名にcamel caseを使用しないので、POJOではラクテルケースも使用しないでください。

REST保証でPOJOをまったく使用しないようにする方法があります。たとえば、HashMapを使用して、場合によってはより簡単にすることができます。

関連する問題