4.json介绍
代码测试:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <!--script标签不能自闭--> <script> //编写一个javascript对象 var user={ name:"吴", age:3, sex:"男" } console.log(user); //将js对象转化为json对象 var json=JSON.stringify(user); console.log(json); //将json对象转化为js对象 var obj=JSON.parse(json) console.log(obj); </script> </head> <body> </body> </html>
json的使用
导入依赖
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.10.0</version> </dependency>
向前端显示一个json对象
@RequestMapping("/j1") @ResponseBody//不会走视图解析器,会直接返回一个字符串 public String json1() throws JsonProcessingException { //objectMapper ObjectMapper mapper=new ObjectMapper(); User user=new User(1,"吴",3); String s = mapper.writeValueAsString(user); return s; }
显示时间
@RequestMapping("/j2") @ResponseBody//不会走视图解析器,会直接返回一个字符串 public String json2() throws JsonProcessingException { //格式化输出 ObjectMapper mapper=new ObjectMapper(); //关闭时间戳 mapper.configure(SerializationFeature.WRITE_DATE_KEYS_AS_TIMESTAMPS,false); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//格式化 mapper.setDateFormat(sdf); Date date=new Date(); return mapper.writeValueAsString(date); } }
一般会把其中的操作抽取出来作为一个工具类jsonUtil
public class JsonUtils { public static String getJson(Object object,String sdf){ ObjectMapper mapper=new ObjectMapper(); //不使用时间戳 mapper.configure(SerializationFeature.WRITE_DATE_KEYS_AS_TIMESTAMPS,false); //自定义日期格式 SimpleDateFormat simpleDateFormat=new SimpleDateFormat(sdf); mapper.setDateFormat(simpleDateFormat); try { return mapper.writeValueAsString(object); } catch (JsonProcessingException e) { e.printStackTrace(); } return null; } }
直接调用
@RequestMapping("/j2") @ResponseBody//不会走视图解析器,会直接返回一个字符串 public String json2() throws JsonProcessingException { Date date=new Date(); return JsonUtils.getJson(date, "yyyy-MM-dd HH:mm:ss"); }
在spring的配置文件中解决json乱码问题
<!--解决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> </beans>