gpt4 book ai didi

json - Spring 4 mvc REST XML 和 JSON 响应

转载 作者:行者123 更新时间:2023-12-02 06:30:38 25 4
gpt4 key购买 nike

我正在尝试通过 Controller 中的相同方法生成 XML 和 JSON 响应。我用谷歌搜索,发现 JSON 是 spring 的默认设置,因为 jackson 在类路径上。但是对于 XML,我必须添加 JAXB 依赖项,然后使用 JAXB 注释来注释我的模型。此外,我必须更改 @RequestMapping 注释的 produces 属性。

现在,我的默认行为已经改变,它返回一个 XML 响应。我想在将 content-Type header 添加到我的值为 application/json 的请求后,我的响应将是 JSON,但遗憾的是事实并非如此。下面是我的代码:-

package com.example.controller;

import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.example.domain.Person;

@RestController("person")
public class PersonController {

@RequestMapping(name ="getperson", produces = {MediaType.APPLICATION_XML_VALUE,MediaType.APPLICATION_JSON_VALUE})
public Person getPerson() {
Person p = new Person();
p.setAge(28);
p.setEmail("email@gmail.com");
p.setName("Amar");
return p;
}

}

模型类:-

package com.example.domain;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Person {

//@XmlElement
private String name;
//@XmlElement
private int age;
private String email;

public String getName() {
return name;
}
@XmlElement
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
@XmlElement
public void setAge(int age) {
this.age = age;
}
public String getEmail() {
return email;
}
@XmlElement
public void setEmail(String email) {
this.email = email;
}
}

构建文件:-

buildscript {
ext {
springBootVersion = '1.3.6.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'spring-boot'

jar {
baseName = 'demo'
version = '0.0.1-SNAPSHOT'
}
sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
mavenCentral()
}


dependencies {
compile('org.springframework.boot:spring-boot-starter-aop')
compile('org.springframework.boot:spring-boot-starter-web')
compile('javax.xml.bind:jaxb-api:2.2.12')
testCompile('org.springframework.boot:spring-boot-starter-test')
}


eclipse {
classpath {
containers.remove('org.eclipse.jdt.launching.JRE_CONTAINER')
containers 'org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8'
}
}

我做错了什么???非常感谢这里的任何帮助。

谢谢,

阿马尔

最佳答案

为了从服务器获得 json 响应,您的请求必须包含设置为 application/jsonAccept header 。

关于json - Spring 4 mvc REST XML 和 JSON 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38303287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com