JSON
轻量的数据交换格式
前端
JavaScript对象转换成JSON字符串 JSON.stringify()
<script type="text/javascript"> var user={ name:"李白", age :3, sex:"男" }; var json=JSON.stringify(user) // console.log(user) console.log(json) script>
JSON字符串转换成JavaScript对象 JSON.parse(str)
var obj=JSON.parse(json)
console.log(obj)
后端
返回单个对象
@RequestMapping("/j1")
@ResponseBody //这个不会走视图解析器,返回一个字符串 也可以在类上面加@RestController
public String text1(){
//封装数据
User user = new User("李白",18,"男");
ObjectMapper objectMapper = new ObjectMapper();
String str = null;
try {
str = objectMapper.writeValueAsString(user);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
// model.addAttribute("msg",name);
// System.out.println(name);
return str;
}
返回多个对象
@RequestMapping("/j2") @ResponseBody //这个不会走视图解析器,返回一个字符串 public String text2(){ //封装数据 ArrayList<User> userList = new ArrayList<>(); User user1 = new User("李白1",18,"男"); User user2 = new User("李白2",18,"男"); User user3 = new User("李白3",18,"男"); User user4= new User("李白4",18,"男"); userList.add(user1); userList.add(user2); userList.add(user3); userList.add(user4); ObjectMapper objectMapper = new ObjectMapper(); String str = null; try { str = objectMapper.writeValueAsString(userList); } catch (JsonProcessingException e) { e.printStackTrace(); } return str; }
解决JSON乱码问题 (在spring配置中)
<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>
JSON自定义工具类(包括Date) 需要导入json相关的包
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import java.text.SimpleDateFormat; public class JsonUtil { public static String getJson(Object object, String dateDormat){ ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false); SimpleDateFormat sdf = new SimpleDateFormat(dateDormat); objectMapper.setDateFormat(sdf); try { return objectMapper.writeValueAsString(object); } catch (JsonProcessingException e) { e.printStackTrace(); } return null; } public static String getJson(Object object){ //Date return getJson(object,"yyyy-MM-dd HH:mm:ss"); } } //******************调用*********** return JsonUtil.getJson(user); return JsonUtil.getJson(userList); return JsonUtil.getJson(date);
json相关的包
<dependency> <groupId>com.fasterxml.jackson.coregroupId> <artifactId>jackson-databindartifactId> <version>2.13.2.2version> dependency>
方法2: FastJson - alibaba
相关的包
<dependency> <groupId>com.alibabagroupId> <artifactId>fastjsonartifactId> <version>1.2.61version> dependency>
相关使用
//JAVA对象转JASON字符串 String str2=JSON.toJSONString(user1); //JSON 子字符串转JAVA对象 User u=JSON.parseObject(str2,User.class); //JAVA对象转JSON对象 JSONObject o = (JSONObject)JSON.toJSON(user1); //JSON对象转JAVA对象 User t = JSON.toJavaObject(o, User.class);