【问题标题】:Jackson FasterXML : How does Spring know how to json object?Jackson FasterXML:Spring 如何知道如何 json 对象?
【发布时间】:2016-11-01 09:17:28
【问题描述】:

我目前正在关注这个tutorial 关于 Spring MVC 和 REST 服务的信息。这是一个简单的 hello world 项目。

有些东西我不明白。在 pom.xml 中,我们设置了 jackson 依赖项,但它从未配置过。 Spring是如何知道json对象的?

这里是代码示例:

pom xml(依赖项):

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${springframework.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${springframework.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${springframework.version}</version>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${jackson.library}</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.dataformat</groupId>
        <artifactId>jackson-dataformat-xml</artifactId>
        <version>${jackson.library}</version>
    </dependency>
</dependencies>

应用配置:

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "package.to.scan")
public class AppConfiguration {
}

AppInitializer:

public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[] { AppConfiguration.class };
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return null;
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }
}

应用控制器:

@RestController
public class AppController {

    @RequestMapping("/")
    public String welcome() {
        return "Welcome to RestTemplate Example.";
    }

    @RequestMapping("/hello/{player}")
    public Message message(@PathVariable String player) {

        Message msg = new Message(player, "Hello " + player);
        return msg;
    }
}

型号:

public class Message {

    String name;
    String text;

    public Message(){

    }

    public Message(String name, String text) {
        this.name = name;
        this.text = text;
    }

    public String getName() {
        return name;
    }

    public String getText() {
        return text;
    }

}

【问题讨论】:

    标签: json spring-mvc jackson


    【解决方案1】:

    Spring 有一组默认的HttpMessageConverters,其中一个是MappingJackson2HttpMessageConverter,如果内容类型是 json 并且 Jackson 在类路径中可用,则使用它。

    【讨论】:

    • 感谢您的回答。这让我很开心。
    猜你喜欢
    • 1970-01-01
    • 2021-03-17
    • 1970-01-01
    • 2018-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 2010-12-24
    相关资源
    最近更新 更多