Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何格式化RESTAPI生成的json输出_Java_Json_Rest_Spring Boot - Fatal编程技术网

Java 如何格式化RESTAPI生成的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"

我正在研究SpringBoot,它是一个rest应用程序。无论何时调用“localhost:8080/projects”,我都会得到一个json数据,格式如下

{
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对象,并用该数据填充项目类