相信大家有时候把一个字符串转为json格式的时候会乱码,解决:
第一步导包:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.2</version>
</dependency>
User实体类:
package com.kuang.user;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private String name;
private int age;
private String sex;
}
UserController:
package com.kuang.controller;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.kuang.user.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
/*@Controller*/
@RestController //代表这个类下面所有方法都不走视图解析器
public class UserController {
@RequestMapping("/j1")
/* @ResponseBody */ //他就不会走视图解析器,会直接返回一个字符串
public String json1() throws JsonProcessingException {
//jackson, ObjectMapper();
ObjectMapper mapper = new ObjectMapper();
//创建一个对象
User user = new User("张文1号",3,"男");
String str = mapper.writeValueAsString(user);
return str;
}
}
这里有一个小小知识点@Controller 默认是走视图解析器,因为json对象就是返回一个字符串,所以说我们如果使用了@Controller注解的话,那么我们就要在方法上写一个注解@ResponseBody这个注解【这两个注解是配合使用】
或者我们直接把类上面的@Controller改为@RestController就行
spring中json配置乱码问题代码【固定死的】
<!--JSON乱码问题-->
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<constructor-arg value="UTF-8"/>
</bean>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper">
<bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
<property name="failOnEmptyBeans" value="false"/>
</bean>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>