JackSon与AJAX的简单操作
Posted niubihh
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JackSon与AJAX的简单操作相关的知识,希望对你有一定的参考价值。
服务器序列化与反序列化
一,序列化
/**
* 序列化为json
*/
public static String toJson(Object obj) {
String result = null;
try {
//对象映射器
ObjectMapper objectMapper = new ObjectMapper();
//设置日期格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd HH:mm:ss");
objectMapper.setDateFormat(sdf);
result = objectMapper.writeValueAsString(obj);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return result;
}
二,反序列化
/** * 反序列化成对象 * * T:表示全部类型与objcet不同的是 泛型强类型 Object为弱类型 * json:需要反序列化的字符串 * valueType:反序列化的类型 * */ public static <T> T toObject(String json,Class<T> valueType) { //对象映射器 ObjectMapper mapper=new ObjectMapper(); T result=null; try { result=mapper.readValue(json,valueType); }catch (Exception e) { e.printStackTrace(); } return result; }
三,序列化时时间的问题
通过jackson序列化时时间是一个问题,它会把时间转换为1977年到现在这个时间的毫秒数,下面来解决这个问题
1,时间注解@JsonFormat: 在需要指定序列化对象的时间字段前面插入时间注解,转变为自己想要的格式
private String comid;
private String comname;
private String comprice;
//设置日期格式
/**
*locale:国家
*timezone:时区
*pattern:时间格式
*/
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
private String comtime;
private String yn;
2,SimpleDateFormat: 在序列化前设置好时间格式
//对象映射器
ObjectMapper objectMapper = new ObjectMapper();
//设置日期格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd HH:mm:ss");
objectMapper.setDateFormat(sdf);
objectMapper.writeValueAsString(obj);
Jackson工具包:
https://files.cnblogs.com/files/NiuBiHH/jackson.zip
四,原生AJAX
获取XHR对象
/** * 获取XHR对象 * */ function getXHR() { //window.XMLHttpRequest 普通浏览器差不多都具备的对象 if(window.XMLHttpRequest){ return new XMLHttpRequest(); }else if(window.ActiveXObject){ //ActiveXObject("Microsoft.XMLHTTP") 为Microsoft公司的 在IE6 IE5下获得的XHR对象 return new ActiveXObject("Microsoft.XMLHTTP"); } return null; }
状态发生改变时调用的函数
/*
*xhr.readyState等于4时 表示请求成功
*xhr.status等于200时 表示服务器响应状态成功
*xhr.responseText 取出服务器响应返回的值
*/
XHR.onreadystatechange=function(){ if(xhr.readyState==4){ if(xhr.status==200){ xhr.responseText;
} } }
open() 如果是本地的话可以用openReques()代替
/*
* method 请求的类型 如:get post
* url 请求是路径
* asycn 是否是异步请求 默认为true
*/
void open( DOMString method, DOMString url, optional boolean async, );
xhr.open("GET","CommodityControl?action=time",true);
send() 请求的所有相关事件都必须在此方法之前
xhr.send(null);
事例:
/** * 获取XHR对象 * */ function getXHR() { //window.XMLHttpRequest 普通浏览器差不多都具备的对象 if(window.XMLHttpRequest){ return new XMLHttpRequest(); }else if(window.ActiveXObject){ //ActiveXObject("Microsoft.XMLHTTP") 为Microsoft公司的 在IE6 IE5下获得的XHR对象 return new ActiveXObject("Microsoft.XMLHTTP"); } return null; } function getTime_click(){ var xhr=getXHR(); //当状态变化时的事件 xhr.onreadystatechange=function(){ if(xhr.readyState==4){ //请求成功 if(xhr.status==200){ //服务器响应状态成功 //将从服务器获得的数据显示在页面上 alert(xhr.responseText); } } } //打开请求 xhr.open("GET","CommodityControl?action=time",true); //请求类型,路径,是否为异步请求 //发送请求 xhr.send(null); //参数 }
五,$.ajax(options)
属性 | 类型 | 描述 |
url | 字符串 | 请求的URL |
Type | 字符串 | 请求的方法 如:GET() POST() 默认GET() |
Data | 对象 | 请求后台时带过去的参数 |
dataType | 字符串 | 设置服务器返回数据的类型 如:XML HTTP JSON SCRIPT TEXT |
timeout | 数值 | 设置请求时间 如果超过改时间则中止请求 并调用错误函数 |
global | 布尔值 | 启用或者禁用全集函数的触发 |
contentType | 字符串 | 请求的内容类型 |
success | 函数 | 请求成功时调用改函数,该函数第一个参数为服务器的响应值 |
error | 函数 | 请求响应指示错误状态码,携带三个实参调用该函数:请求对象 , 状态消息字符串 , 异常对象 |
complete | 函数 | 请求响应指示成功状态码,调用该函数, 如果指定了success或error回调函数,则在他们被调用之后在调用该函数 |
beforeSend | 函数 | 发起请求前调用的函数 |
async | 布尔值 | 指定是否为异步请求 |
事例:
$.ajax({ type: "get", //请求类型 url: "CommodityControl?action=allcom", //路径 beforeSend: function () { //请求前的事件 c.show(); }, success: function (data) { //请求成功后的事件 $.each(data, function (index, obj) { var tr = $("<tr/>"); var inptd = $("<td/>"); $("<input name=‘comCheck‘ class=‘comCheck‘ type=‘checkbox‘/>").html(obj.comtime).appendTo(inptd).data("id", obj.comid); inptd.appendTo(tr); $("<td/>").html(obj.comid).appendTo(tr); $("<td/>").html(obj.comname).appendTo(tr); $("<td/>").html(obj.comprice).appendTo(tr); $("<td/>").html(obj.comtime).appendTo(tr); var inputtd = $("<td/>"); if (obj.yn == ‘y‘) { $("<input name=‘yn‘ checked=‘‘ value=‘y‘ type=‘checkbox‘/>").html(obj.comtime).appendTo(inputtd); } else { $("<input name=‘yn‘ type=‘checkbox‘/>").html(obj.comtime).appendTo(inputtd); } inputtd.appendTo(tr); var atd = $("<td/>"); $("<a href=‘#‘class=‘aupdate‘></a> ").html("详细 ").appendTo(atd).data("id", obj.comid); $("<a href=‘#‘ class=‘adel‘></a> ").html(" 删除").appendTo(atd).data("id", obj.comid); atd.appendTo(tr); $("#com").append(tr); c.close(); }); }, complete: function () { //请求完成时的事件,不论成功或失败 $("#hint").html("请求完成..."); }, error: function (xhr, textStatus, errorThrown) { //错误时 alert(xhr + textStatus + errorThrown); } });
以上是关于JackSon与AJAX的简单操作的主要内容,如果未能解决你的问题,请参考以下文章
18 AjaxJson以及jackson框架解析json的基本应用