json系列文章——json的使用json系列文章——json的使用JSON(JavaScript Object Notation) 是一种轻量级的数据
json系列文章——json的使用
json系列文章——json的使用
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。使用json可以方便地在前段和服务器之间传递消息。JSON 最常见的用法之一,是从 web 服务器上读取 JSON 数据(作为文件或作为 HttpRequest),将 JSON 数据转换为 JavaScript 对象,然后在网页中使用该数据。本文简单介绍一下json的使用。
一、后台传递过来的是json对象(数组)这种情况下,java程序需要几个包(见附件json-jar.rar)的支持,使用时需要将其加入到环境变量中。这时,后台程序应该这样写:
?
public void jsonTest(){//新建一个json对象数组JSONArray jsonArray=new JSONArray();//新建一个json对象,并放入两个键值对,可以理解为一个属性名和一个属性值JSONObject jObject1=new JSONObject();jObject1.accumulate("key1","value11");jObject1.accumulate("key2","value12");//将json对象翻入对象组中jsonArray.add(jObject1);JSONObject jObject2=new JSONObject();jObject2.accumulate("key1","value21");jObject2.accumulate("key2","value12");jsonArray.add(jObject2);//返回json对象HttpServletResponse response=ServletActionContext.getResponse();response.setCharacterEncoding("UTF-8"); response.setContentType("text/xml"); try {response.getWriter().print(jsonArray);} catch (IOException e) {e.printStackTrace();}}?在前台可以通过以下方式获取json对象并使用其中的数据:
?
$.getJSON("/ygmy/getProClass?proClass.proClass.proclassid=5",//获取json数组(对象)的urlfunction(data){//获取到json数组(对象)后的回调函数$.each(data,function(i,item){alert(item.key);//使用json中的值});})?上述代码中的方法$.getJSON()是jQuery对json特殊支持的方法,有关次方法的详细介绍可以参考附件jquery.rar中的jQuery_API_1.5.chm,在使用这个方法时需要在页面中引入附件jquery.rar中的jquery-1.5.1.js
二、后台传递过来的是json格式的字符串正常情况下,从java后台传递过来的都是字符串而非json对象(组)。这时,我们只需要将字符串按照一定格式拼接起来,然后调用javascript的eval方法即可生成json对象(组)。下边介绍一个例子,通过ajax从后台读取一个字符串,在前台用eval函数生成json对象数组,然后调用。
后台的程序如下所示:
?
public String forProManagement(){HttpServletRequest request=ServletActionContext.getRequest();List<ProClass> proClassBos=proClassDAO.searchProClasses(proClass);request.setAttribute("proClasses", proClassBos);String jsonStr="{ "employees" : [" +"{ "firstName":"Bill" , "lastName":"Gates" }," +"{ "firstName":"George" , "lastName":"Bush" }," +"{ "firstName":"Thomas" , "lastName":"Carter" } ]}";request.setAttribute("jsonStr", jsonStr);return "success";}?前台js代码如下所示:
?
$.post("/ygmy/getProClass?proClass.proClass.proclassid=5",function(data){alert(data);//此处弹出的是后台拼接的字符串var obj = eval ("(" + data + ")");alert(obj);//经过处理后,此处弹出的是[object],即对象数组,此处可参照上一段js代码使用数据})?当然也可以再后台将字符串放在request里,前台通过request.getAttribute();读取,然后再进行处理。要怎样实现,可根据具体情况进行选择。
