开发过程中前后端传值总会遇到json字符串与对象之间的转换,
总结以下几点,日后复习。
一: 先把开发过程中的坑排了
导入js文件
jquery-1.11.1.min.js
当web.xml中
<url-pattern>/</url-pattern>
是以”/”为spring接收格式时,
是 resultful 风格,默认不加载 css.js.img 的
需要手动在 springmvc 的配置文件中添加
<!-- location 表示工程路径 mapping 表示需要映射的目录,加载js,css,img -->
<mvc:resources location="/js/" mapping="/js/*"/>
二:两个注解
@RequestBody
表示接收json字符串数据,再将json字符串转换成对象
@ResponseBody
表示响应json对象数据,再将json对象转换成字符串
三:前端
js中定义一个对象,并用ajax与后台交互
$(function(){
var obj = {
id : 1,
name : "张三",
age : 10
};
$.ajax({
url : "${pageContext.request.contextPath }/ajax",
contentType : "application/json;charset=utf-8",
data : JSON.stringify(obj),
type : "post",
dataType : "json",
success : function(data){
console.log(data.id);
console.log(data.name);
}
});
四:后台
@Controller
public class AjaxController {
@ResponseBody
@RequestMapping("/ajax")
public Map<String,Object> ajax(
@RequestBody Map<String,Object> param) {
// 接收请求数据
System.out.println("ID : "+param.get("id"));
System.out.println("姓名 : "+param.get("name"));
System.out.println("年龄 : "+param.get("age"));
// 响应请求数据
Map<String,Object> result = new HashMap<>();
result.put("id", "et_"+param.get("id"));
result.put("name", "et_"+param.get("name"));
return result;
}
}
json字符串与对象的相互装换
package com.abc.common;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JsonUtil {
private static ObjectMapper mapper = null;
private static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
static{
// 创建json对象
mapper = new ObjectMapper();
// json处理时间格式
mapper.setDateFormat(dateFormat);
}
// 将对象转换为json字符串
public String toStr(Object object) {
String json = null;
try {
json = mapper.writeValueAsString(object);
} catch (Exception e) {
e.printStackTrace();
}
return json;
}
// 将json字符串转换为对象
public <T> T toObject(String json,TypeReference<T> ref) {
T t = null;
try {
t = mapper.readValue(json, ref);
} catch (Exception e) {
e.printStackTrace();
}
return t;
}
public static void main(String[] args) {
JsonUtil ju = new JsonUtil();
// 1.将字符串转换成对象
List<Map<String,Object>> list = new ArrayList<>();
Map<String,Object> map = new HashMap<>();
map.put("name", "张三");
map.put("age", 321);
map.put("date", new Date());
list.add(map);
System.out.println("我是list : "+list);
System.out.println("我是map : "+map);
String result = ju.toStr(map);
System.out.println("我是对象转换为json字符串 : "+result);
// 2.将json转换成对象
String json = "[{\"name\":\"张三\",\"age\":321}]";
List<Map<String,Object>> reObj = ju.toObject(json, new TypeReference<List<Map<String,Object>>>(){});
System.out.println("我是json字符串转换为对象 : "+reObj);
}
}
样例
我是list : [{date=Sat Nov 18 13:33:16 CST 2017, name=张三, age=321}]
我是map : {date=Sat Nov 18 13:33:16 CST 2017, name=张三, age=321}
我是对象转换为json字符串 : {"date":"2017-11-18 13:33:16","name":"张三","age":321}
我是json字符串转换为对象 : [{name=张三, age=321}]