JSON
1.前端的JSON对象
//编写一个js对象
var user = {
name : "东",
age:18,
sex:"男"
};
//将js对象转化为json对象
var s = JSON.stringify(user);
//将json对象转换为js对象
var obj = JSON.parse(s);
2.controller生成JSON对象
-
首先需要导包
<!-- 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>
-
有一个pojo类
@Data @AllArgsConstructor @NoArgsConstructor public class User { private String name; private int age; private String sex; }
-
在controller生成json
@Controller //@RestController //RestController所有的返回值都不走视图解析器 public class UserController { @RequestMapping("/j1") @ResponseBody //不会走视图解析器,会直接返回字符串 public String json1() throws JsonProcessingException { User user = new User("东", 12, "男"); //jackson, objectMapper ObjectMapper mapper = new ObjectMapper(); //将对象转化为字符串 String s = mapper.writeValueAsString(user); return s; }; }
3.解决乱码
-
通过produces设置
@RequestMapping(value = "/j1",produces = "application/json;charset=utf-8")
-
通过spring配置文件
<!-- 解决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>
4.JSON对象中有多个java对象
@RequestMapping(value = "/j2")
@ResponseBody
public String json2() throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
List<User> users = new ArrayList<User>();
User user1 = new User("东1", 12, "男");
User user2 = new User("东2", 13, "男");
User user3 = new User("东3", 14, "男");
User user4 = new User("东4", 15, "男");
User user5 = new User("东5", 16, "男");
users.add(user1);
users.add(user2);
users.add(user3);
users.add(user4);
users.add(user5);
String s = mapper.writeValueAsString(users);
return s;
};
5.JSON返回时间对象
- 使用java方法
@RequestMapping(value = "/j3")
@ResponseBody
public String json3() throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String s = mapper.writeValueAsString(sdf.format(date));
return s;
};
- 使用mapper object,String da
@RequestMapping(value = "/j3")
@ResponseBody
public String json3() throws JsonProcessingException {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false);
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
mapper.setDateFormat(sdf);
String s = mapper.writeValueAsString(date);
return s;
};
- 自己创建工具类
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 objectMapper = new ObjectMapper();
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormat);
objectMapper.setDateFormat(simpleDateFormat);
try {
return objectMapper.writeValueAsString(object);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return null;
}
}
6.使用fastjson
-
导包
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.70</version> </dependency>