1. JSON转为Java对象
- 导入jackson的相关jar包
- 创建Jackson核心对象 ObjectMapper
- 调用ObjectMapper的相关方法进行转换
readValue(json字符串数据,Class)
2. Java对象转换JSON
-
使用步骤:
-
导入jackson的相关jar包
-
创建Jackson核心对象 ObjectMapper
-
调用ObjectMapper的相关方法进行转换
转换方法:
- writeValue(参数1,obj):
参数1:
File:将obj对象转换为JSON字符串,并保存到指定的文件中
Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中
OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中 - writeValueAsString(obj):将对象转为json字符串
- 注解:
- @JsonIgnore:排除属性。
- @JsonFormat:属性值得格式化
- @JsonFormat(pattern = “yyyy-MM-dd”)
- 复杂java对象转换
- List:数组
- Map:对象格式一致
常用方法举例:
用一个map来装键值对 (用于用户名校验)
Map<String,Object> map = new HashMap<String,Object>();
if(user != null) //如果查询数据库返回的user对象不是空值,说明查询到这个用户名已经重复了
{
map.put("userExsit",true);
map.put("msg","用户名太受欢迎,请更换一个")
}
else
{
map.put("userExsit",false);
map.put("msg","用户名可用");
}
//将Map转化为json,并传递给客户端
//将map转化为json
ObjectMapper mapper = new ObjectMapper();
//并且传递给客户端
//直接写到getWriter这个往客户端写数据的流中
mapper.writeValue(response.getWriter(),map);
常见问题:
1.前端没法获取json的键值对
原因:前端没有把输出流当成Json来读取,而是简单得读了一个字符串。
解决方案:
- 在JQuery中的$.get(type):将最后一个参数type指定为"json"
- 在服务器端设置MIME类型
response.setContentType(“application/json;charset=utf-8”);
2.乱码问题
常规解决方法就可以,在Servlet中,加入
response.setCont