我已经创建了一个Spring Boot应用程序。有人告诉我,Spring是Jackson附带的-但是,我看到的每个教程都将其添加为依赖项。
我想解析并创建一些JSON-是否有关于如何使用Spring中使用的内容的明确指南?
谢谢。
答案 0 :(得分:0)
如果要创建JSON响应终结点,只需创建一个返回json的rest终结点。如果Springboot发现杰克逊是依赖项或类路径,它会自动为其余端点配置杰克逊消息转换器,因此,使剩余端点返回json响应所需要做的就是将杰克逊作为依赖项,而Springboot将通过自动配置来处理其余部分。
默认情况下,spring或springboot在启动期间配置以下消息转换器:
ByteArrayHttpMessageConverter – converts byte arrays StringHttpMessageConverter – converts Strings ResourceHttpMessageConverter – converts org.springframework.core.io.Resource for any type of octet stream SourceHttpMessageConverter – converts javax.xml.transform.Source FormHttpMessageConverter – converts form data to/from a MultiValueMap<String, String>. Jaxb2RootElementHttpMessageConverter – converts Java objects to/from XML MappingJackson2HttpMessageConverter – converts JSON MappingJacksonHttpMessageConverter – converts JSON AtomFeedHttpMessageConverter – converts Atom feeds RssChannelHttpMessageConverter – converts RSS feeds
您可能需要添加的依赖项:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.8</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.8</version>
</dependency>
答案 1 :(得分:0)
如果您使用Spring Boot,则jackson-databind
依赖项将包含在spring-boot-starter-json
模块中(该模块也包含在其他Spring Boot启动的模块中,例如spring-boot-starter-web
)。
如果在依赖项中指定了启动程序模块,则可以使用Spring附带的杰克逊版本编写读写json程序。最好明确指定此依赖关系,因为该功能可能会随着Spring更新而改变。
Spring Boot的代码示例:
@Bean
public CommandLineRunner commandLineRunner(ApplicationContext applicationContext) {
return args -> {
String john = objectMapper().writeValueAsString(new User("John", 43));
System.out.println(john);
};
}
@Bean
public ObjectMapper objectMapper() {
return new ObjectMapper();
}
更新:
在Spring 5.1。* org.springframework.spring-web
依赖项中,还提供了Jackson,可以像上面的示例中一样使用。
答案 2 :(得分:0)
您只需在配置中通过@Autowired或构造函数注入已经在Spring中定义的ObjectMapper。例如:
@Configuration
public class SomeConfiguration {
@Bean
public SomeService someService(ObjectMapper objectMapper) {
return new SomeService(objectMapper);
}}
答案 3 :(得分:0)
您可以使用ObjectMapper,首先通过以下方式添加杰克逊·科特林的支持
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-kotlin</artifactId>
<version>2.9.8</version>
</dependency>
之后,您可以像这样在项目中的任何地方创建kotlin jackson映射器实例
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
val mapper = jacksonObjectMapper()
对于序列化:
val serialized = mapper.writeValueAsString(OBJECT)
反序列化:
mapper.readValue(json)
您可以从此topic中找到更多信息。