json

it2025-02-14  6

json

1.为什么要有json?

前后端分离时代:

后端部署后端。提供接口,提供数据;(/hello/h1 :也是接口,提供给后端访问)

​ json (一种数据交换格式)

前端独立部署,负责渲染后端数据;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FOLaEOGL-1603280601756)(C:\Users\Admin\AppData\Roaming\Typora\typora-user-images\image-20200605164914219.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3FJZ5x46-1603280601758)(C:\Users\Admin\AppData\Roaming\Typora\typora-user-images\image-20200607103255530.png)]

2. Jackson依赖

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.11.0</version> </dependency>

3.json原生乱码解析器:

@Controller public class UserController { @RequestMapping(value = "/j1",produces = "application/json;charset=utf-8") @ResponseBody//他就不会走视图解析器,会直接返回一个字符串 public String json1() throws JsonProcessingException { //jackson,ObjectMapper ObjectMapper mapper = new ObjectMapper(); //创建一个对象 User user = new User("青江",5,"男"); String str = mapper.writeValueAsString(user); return str; } }

4.springmvc解决json乱码问题:(推荐)

配置在springmvc-servlet.xml中:

<!--json乱码问题配置--> <mvc:annotation-driven> <mvc:message-converters register-defaults="true"> <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>

5.一些注解用法:

对类注解:

@Controller//走视图解析器 @RestController//不走视图解析器,其下所由方法只返回字符串

对方法注解:

@ResponseBody//他就不会走视图解析器,会直接返回一个字符串 //配合@Controller来使用的

6.提取Json工具类

public class JsonUtils { public static String getJson(Object object){ return getJson(object,"yyyy-MM-dd HH:mm:ss"); } public static String getJson(Object object,String dateFormat){ ObjectMapper mapper = new ObjectMapper(); //不使用时间戳的方式 mapper.configure(SerializationFeature.WRITE_DURATIONS_AS_TIMESTAMPS,false); //自定义日期的格式 SimpleDateFormat sdf = new SimpleDateFormat(dateFormat); mapper.setDateFormat(sdf); try { return mapper.writeValueAsString(object); } catch (JsonProcessingException e) { e.printStackTrace(); } return null; } }

7.FastJson

rocessingException e) { e.printStackTrace(); }

return null; }

}

## 7.FastJson 类似于:对Jackson的封装
最新回复(0)