Java 如何格式化RESTAPI生成的json输出
我正在研究SpringBoot,它是一个rest应用程序。无论何时调用“localhost:8080/projects”,我都会得到一个json数据,格式如下Java 如何格式化RESTAPI生成的json输出,java,json,rest,spring-boot,Java,Json,Rest,Spring Boot,我正在研究SpringBoot,它是一个rest应用程序。无论何时调用“localhost:8080/projects”,我都会得到一个json数据,格式如下 { uid: "166" code: "99991" name: "iPOC AG Mednet - BIOC" protocol: "iPOC AG Mednet - BIOC" client: "BioClinica"
{
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;
}
@RequestMapping(value=“/projects”,method=RequestMethod.GET,products=“application/json”)
public@ResponseBody List getProject(){
GetAuthorizedWebSendTransferProjects请求=新建GetAuthorizedWebSendTransferProjects();
GetAuthorizedWebSendTransferProjectsResponse=gw.getResponse(请求);
JAXBElement arr=response.getGetAuthorizedWebSendTransferProjectsResult();
ArrayOfProjectContainer arr1=arr.getValue();
List arr2=arr1.getProjectContainer();
列表项目=getPopulatedProjectList(arr2);
返回项目;
}
我需要添加任何库来实现这一点,还是应该修改Project类的toString()方法。现在响应头有“Content-Type:application/json”,但我需要的头是“Content-Type:application/hal+json”。有人能帮我解决这个问题吗。提前感谢。我建议使用将调用“localhost:8080/projects”得到的响应转换为JsonNode对象。然后,您可以根据需要操作JsonNode对象,并用该数据填充项目类。我建议使用将调用“localhost:8080/projects”得到的响应转换为JsonNode对象。然后,您可以根据需要操作JsonNode对象,并用该数据填充项目类。我建议使用将调用“localhost:8080/projects”得到的响应转换为JsonNode对象。然后,您可以根据需要操作JsonNode对象,并用该数据填充项目类。我建议使用将调用“localhost:8080/projects”得到的响应转换为JsonNode对象。然后,您可以根据需要操作JsonNode对象,并用该数据填充项目类