json 使用

1.首先介绍下Json 。
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它基于JavaScript。


它是一个“名称/值”对的集合。形式如 "username":"zhangbreeze"  这个key为username ,value为zhangbreeze


由{  }  代表一个对象,里面包含一个对象。


由[ ]  代表一个数组,里面包含多个对象。


//看看下面的例子,表示一个json对象,包含了username,age属性,info对象,address数组对象


//  index.jsp  
var user = {
  "username" : "andy",
  "age" : 20,
  "info" : {
   "tel" : "123456",
   "cellphone" : "98765"
  },
  "address" : [ {
   "city" : "beijing",
   "postcode" : "222333"
  }, {
   "city" : "newyork",
   "postcode" : "555666"
  } ]
 };
//使用json对象,直接通过user.username即可,user.info.tel  user.address[0].city
下面介绍下如何在Servlet中使用Json
1.首先需要将几个必须的包导入工程中。


   其中1到5 是 json-lib-2.2.3-jdk15.jar 的依赖包,必须导入。


 1.commons-beanutils-1.8.0.jar    //是对bean操作的类,可以访问类的属性及GET和SET方法,映射成json对象
 2.commons-collections-3.2.1.jar  //包含了一些Apache开发的集合类,功能比java.util.*强大


 3.commons-lang-2.4.jar           //包含了一些数据类型工具类,是java.lang.*的扩展


 4.commons-logging-1.1.1.jar      //是输出LOG用的
 5.ezmorph-1.0.6.jar              //json和java转化的辅助工具


 6.json-lib-2.2.3-jdk15.jar       //json和java转化的辅助工具


更多jar包信息参照  工程中jar功能对照表
2.创建一个user的Bean对象(id,username),创建servlet工程并注册.
3.将创建的user对象转换为json数据格式
PrintWriter out = response.getWriter();
User user = new User(1,"福州"); 
JSONObject jsonObject = JSONObject.fromObject(cityBean);
//如果是Json数组的话,调用JSONArray jsonArray = JSONArray.fromObject(cityBeans);
out.println(jsonObject);
out.flush();
out.close();
4.在页面将接收到的文本转换为json数据类型
var text = request.responseText;


//文本转换成json对象为{"id":1,"username":"福州"}
var json = text.evalJSON();
alert("json="+json);
//$("testId").value=json.id;
接下来介绍下Struts中使用JSON数据格式。
1.创建一个web工程,导入struts所需包,不需要导入上述的包了,只需导入一个 struts2-json-plugin-2.1.8.1.jar,搭好框架。
2.在struts.xml中,创建package 需要继承json-default,而json-default也继承了struts-default,只是添加了几个属性而已
<!-- 当action以json格式响应数据时 必须继承自json的默认包 -->
 <!-- extends="json-default" -->
 <package name="testJson_pack" extends="json-default" namespace="/testJsonName">
  <action name="testJsonAction" class="sf.lesson07.action.TestJsonAction">
   <!-- type="json" action返回的类型为json -->
   <result name="userBean" type="json" />
   <result name="list" type="json" />
  </action>
 </package> 
3.同样创建一个userBean对象(id,username),然后在action中
 private UserBean userBean = null;
 private List<String> list = null;
 private String username;
 //以及他们的get & set方法,json拦截器会自动调用get方法转换成json格式
 //页面请求list方法,返回一个list数组对象
 //@JSON(name="StringList") //指定响应的时候{name:{}}
 public String list() throws Exception {
  list = new ArrayList<String>();
  list.add("hhh");
  list.add("jjj");
  list.add("kkk");
  return "list";
 }
 
Ps: 这里我们 返回的是调用所有get方法,并生成他们对象的json对象。
4.在页面中接收到的是一个json数组,包含了多个对象,有list数组,userBean对象,以及username属性
var text = request.responseText;
alert(text);
var json = text.evalJSON();
alert(json);
$("password").value = json.list[0]; //json.userBean.id;  //json.username;  


错误解决: org.apache.struts2.json.JSONException: java.lang.reflect.InvocationTargetException
注意: 用struts json的时候。对不必要的get方法我们要屏蔽掉,比如dao层或者service层的方法,都要忽略掉,或者加上这么一句话  @JSON(serialize = false)  public IUserDao getUserDao() {   return userDao;  } 
不然会报错org.apache.struts2.json.JSONException: java.lang.reflect.InvocationTargetException
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值