2015-02-03 3 views
0

Я работаю над весенним ботинком, и это приложение для отдыха. Всякий раз, когда я называю «localhost: 8080/projects», я получаю данные json в приведенной ниже форме.Как форматировать json-выход, созданный из остального api

{ 
uid: "166" 
    code: "99991" 
     name: "iPOC AG Mednet - BIOC" 
      protocol: "iPOC AG Mednet - BIOC" 
       client: "BioClinica" 
        description: "AG Mednet - BIOC PoC " 
         platform: "BioPACS" 
          subjectConfiguration: { 
    displayInitials: true 
    displayDOB: true 
    displayGender: true 
} 
uploadConfiguration: { 
    hasAttachments: true 
    hasNonDicom: false 
    autoInserted: true 
}} 

Но мне это нужно в ниже указанном формате:

{ 
"_embedded" : { 
"projects" : [ { 
    "uid" : "1", 
    "code" : "123", 
    "name" : "Project 1", 
    "protocol" : "Protocol 1", 
    "client" : "Client", 
    "description" : "", 
    "platform": "BioPACS", 
    "subjectConfiguration" : { 
    "displayInitials" : true, 
    "displayDOB" : true, 
    "displayGender" : true 
}, 
"uploadConfiguration" : { 
    hasAttachments: true, 
    hasNonDicom: true, 
    isAutoInserted: false, 
}, 
"_links" : { 
    "self" : { 
    "href" : "http://localhost:8080/projects/123" 
} 
} 
}]}} 

И мой «проект» Класс, как указано ниже.

public class Project { 

private String uid; 
private String code; 
private String name; 
private String protocol; 
private String client; 
private String description; 
private String platform; 
private SubjectConfiguration subjectConfiguration; 
private UploadConfiguration uploadConfiguration; 

public String getUid() { 
    return uid; 
} 

public void setUid(String uid) { 
    this.uid = uid; 
} 

public String getCode() { 
    return code; 
} 

public void setCode(String code) { 
    this.code = code; 
} 

public String getName() { 
    return name; 
} 

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

public String getProtocol() { 
    return protocol; 
} 

public void setProtocol(String protocol) { 
    this.protocol = protocol; 
} 

public String getClient() { 
    return client; 
} 

public void setClient(String client) { 
    this.client = client; 
} 

public String getDescription() { 
    return description; 
} 

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

public String getPlatform() { 
    return platform; 
} 

public void setPlatform(String platform) { 
    this.platform = platform; 
} 

public SubjectConfiguration getSubjectConfiguration() { 
    return subjectConfiguration; 
} 

public void setSubjectConfiguration(
     SubjectConfiguration subjectConfiguration) { 
    this.subjectConfiguration = subjectConfiguration; 
} 

public UploadConfiguration getUploadConfiguration() { 
    return uploadConfiguration; 
} 

public void setUploadConfiguration(UploadConfiguration uploadConfiguration) { 
    this.uploadConfiguration = uploadConfiguration; 
} 

@Override 
public String toString() { 
    return "'uid':'" + uid + "', " + "'code':'" + code + "', " 
      + "'name':'" + name + "', " + "'protocol':'" + protocol + "', " 
      + "'client':'" + "', " + "'description':'" + description + "', " 
      + "'platform':'" + platform + "', " + "'subjectConfiguration':'" 
      + subjectConfiguration + "', " + "'uploadConfiguration':'" 
      + uploadConfiguration + "'" ; 
}} 

И метод, который возвращает список приведен ниже:

@RequestMapping(value = "/projects", method = RequestMethod.GET, produces = "application/json") 
public @ResponseBody List<Project> getProject() { 
    GetAuthorizedWebSendTransferProjects request = new GetAuthorizedWebSendTransferProjects(); 
    GetAuthorizedWebSendTransferProjectsResponse response = gw.getResponse(request); 
    JAXBElement<ArrayOfProjectContainer> arr = response.getGetAuthorizedWebSendTransferProjectsResult(); 
    ArrayOfProjectContainer arr1 = arr.getValue(); 
    List<ProjectContainer> arr2 = arr1.getProjectContainer(); 
    List<Project> projects = getPopulatedProjectList(arr2); 
    return projects; 
} 

Мне нужно добавить любую библиотеку для достижения этой цели, или я должен изменить свой метод ToString() класса проекта Do. Теперь заголовок ответа имеет «Content-Type: application/json», но заголовки, которые мне нужны, это «Content-Type: application/hal + json». Любой может помочь мне решить эту проблему. Заранее спасибо.

ответ

3

Я бы рекомендовал использовать Jackson, чтобы преобразовать ответ, который вы получаете от вызова «localhost: 8080/projects» к объекту JsonNode. Затем вы можете манипулировать объектом JsonNode, тем не менее, хотите и заполнить свой класс Project этими данными.