<script type="text/javascript"> function People(){ this.姓名="张三"; this.age=15; } var p1=new People(); window.alert(p1.姓名); </script>
var person={name:"刘德华",age:25,sex:"男"}
<script type="text/javascript"> var a=[{name:"张三",age:15},{name:"李四",age:20},{name:"王五",age:25}]; alert(a[0].name); </script>
<script type="text/javascript"> //普通定义数组方法 var arr=new Array(); arr.push("aa"); arr.push("bb"); arr.push("cc"); arr.push("dd"); window.alert(arr.length); //json中定义数组方式 var arrJson=["aa",2,"bb"]; window.alert(arrJson[1]); </script>
<script type="text/javascript"> var arrJson=[ //数组里每个元素都是一个对象 {name:"张三",age:15}, {name:"李四",age:20}, {name:"王五",age:25} ]; window.alert(arrJson.length); for(var i=0;i<arrJson.length;i++){ //循环这个数组,取出每个对象并操作 var object=arrJson[i]; window.alert(object.name+"\n"); } </script>
<script type="text/javascript"> var people={ name:"张三", age:15, sex:"男", }; var strJson=JSON.stringify(people); //把json对象people转为字符串 window.alert(strJson); </script>
结果:
<script type="text/javascript"> var people={ name:"张三", age:15, sex:"男", }; var strJson=JSON.stringify(people); //将json对象转为字符串 window.alert(strJson); var jsonObj=JSON.parse(strJson); //将字符串转为JSON对象 window.alert(jsonObj); </script>
结果:
public String execute(){ // String strJson="{name:\"张三\",age:15}"; UserBean user=new UserBean("张三", "男",15); Gson gson=new Gson(); String userStrJson=gson.toJson(user); //Gson.toJson(obj) 将一个对线转为Json数据格式的String字符串。 System.out.println(userStrJson); return null; }
结果:
public String execute(){ // String strJson="{name:\"张三\",age:15}"; UserBean user=new UserBean("张三1", "女",25); Map<String, Object> map=new HashMap<String,Object>(); map.put("key_1", "value_1"); map.put("key_2", user); //这个map的键的值是一个对象 Gson gson=new Gson(); String userStrJson=gson.toJson(map); //Gson.toJson(obj) 将一个对线转为Json数据格式的String字符串。 System.out.println(userStrJson); return null; }
结果:
public class GsonTest { public String execute(){ // String strJson="{name:\"张三\",age:15}"; UserBean user=new UserBean("张三", "男",25); UserBean user2=new UserBean("李四", "女",15); ArrayList<UserBean> list=new ArrayList<UserBean>(); list.add(user); list.add(user2); Gson gson=new Gson(); String userStrJson=gson.toJson(list); //Gson.toJson(obj) 将一个对线转为Json数据格式的String字符串。 System.out.println(userStrJson); return null; } }
结果:
private static void str_to_javabean() { String user="{\"userName\":\"李四\",\"sex\":\"女\",\"age\":15}"; Gson gson=new Gson(); UserBean userbean=gson.fromJson(user,UserBean.class); //将string类型转为javaBean对象
System.out.println(userbean.getUserName()+userbean.getSex()+userbean.getAge()); }
结果:
/** *将字符串转为javaBean对象 */ private static void str_to_map() { String user="{\"userName\":\"李四\",\"sex\":\"女\",\"age\":15}"; Gson gson=new Gson(); Map<String,Object> map=gson.fromJson(user,Map.class); //将字符串转为map对象 if(map!=null){ System.out.println(map.get("userName")+"\t"+map.get("sex")+"\t"+map.get("age")); } }
结果:
private static void str_to_list() { String user="[{\"userName\":\"张三\",\"age\":15,\"sex\":\"男\"},{\"name\":\"李四\",\"age\":25,\"sex\":\"女\"}]"; Gson gson=new Gson(); List<UserBean> list = gson.fromJson(user, new TypeToken<List<UserBean>>() { }.getType()); System.out.println(list.get(0).getUserName()); System.out.println(list.get(0).getAge()); System.out.println(list.get(0).getSex()); }
结果:
<%@ page language="java" contentType="text/html; charset=UTF-8" %> <% String path=request.getContextPath(); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script type="text/javascript" src="/lib/json2.js"></script> <script type="text/javascript"> function send_to_service(){ //定义一个json对象 var people={ userName:"张三", age:20, sex:"女", }; //把json对象转为json格式的字符串 var strPeople=JSON.stringify(people); //把json格式的字符串传给后台 window.location.href="<%=path%>/struts/exam!getJsonStr?jsonStr="+strPeople; } </script> </head> <body> <input type="button" value="发送数据给服务器端" onclick="send_to_service();"> </body> </html>
GsonTest.java
package action; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import javabean.UserBean; public class GsonTest extends BaseAction{ public String execute(){ return null; } /** *获取客户端的传过来的数据 */ public String getJsonStr(){ String strJson=request.getParameter("jsonStr"); Gson gson=new Gson(); UserBean userbean=gson.fromJson(strJson, UserBean.class); System.out.println(userbean.getUserName()); System.out.println(userbean.getAge()); System.out.println(userbean.getSex()); return null; } }
结果:
<%@ page language="java" contentType="text/html; charset=UTF-8" %> <% String path=request.getContextPath(); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script type="text/javascript" src="/lib/json2.js"></script> <script type="text/javascript"> function send_to_user(){ window.location.href="<%=path%>/struts/exam!send_to_user"; } </script> </head> <body> <input type="button" value="服务器端发送数据到客户端" onclick="send_to_user();"> </body> </html>
<struts> <constant name="struts.devMode" value="true" /> <constant name="struts.enable.DynamicMethodInvocation" value="true" /> <constant name="struts.i18n.encoding" value="UTF-8"></constant> <constant name="struts.multipart.maxSize" value="209715200"></constant> <constant name="struts.action.extension" value="action,,"></constant> <constant name="struts.i18n.reload" value="true"></constant> <constant name="struts.ui.theme" value="simple" /> <constant name="struts.configuration.xml.reload" value="true"></constant> <constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant> <constant name="struts.handle.exception" value="true"></constant> <constant name="struts.devMode" value="true" /> <package name="default" namespace="/struts" extends="struts-default"> <action name="exam" class="action.GsonTest"> <result name="show">/show.jsp</result> </action> </package> </struts>
GsonTest.java(这个类负责从数据库中获取数据,然后把数据放到作用域中,以供jsp显示)
package action; import java.sql.Connection; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.ResultSetHandler; import org.apache.commons.dbutils.handlers.BeanListHandler; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.opensymphony.xwork2.ActionContext; import DBUtil.DBUtil; import javabean.UserBean; public class GsonTest extends BaseAction{ public String execute(){ return null; } /** *从数据库中获取数据然后发送到客户端 */ public String send_to_user(){ Connection conn=null; String sql="select * from user "; QueryRunner query=new QueryRunner(); try { conn=DBUtil.getConn(); //DBUtil.getConn()这个方法提供一个数据库的连接 //从数据库取到数据 List<UserBean> userList=query.query(conn, sql, new BeanListHandler<UserBean>(UserBean.class)); //注意,这里的userBean的构造方法至少得有一个是空的构造方法,否则将无法创建对象导致报错 //把数据转为json格式字符串 Gson gson=new Gson(); String users=gson.toJson(userList); //把json格式的字符串放到值域中 request.setAttribute("users", users); //把List对象放到值域中,用于对比参照 request.setAttribute("usersObj", userList); } catch (SQLException e) { e.printStackTrace(); }finally{ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } return "show"; } }
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <script type="text/javascript" src="/lib/json2.js"></script> <script type="text/javascript"> window.onload=function(){ //拿到值域中的json格式的数据 var strusers=‘${requestScope.users}‘; //这里不能用struts标签中的 property属性 来获取,否则报错 //把json格式的数据转为对象 var userObj=JSON.parse(strusers); for(var i=0;i<userObj.length;i++){ //取出userObj中的每一个对象 var user=userObj[i]; //创建表格元素 var Tr=document.createElement("tr"); //创建tr标签 var usernameTd=document.createElement("td"); var ageTd=document.createElement("td"); var sexTd=document.createElement("td"); //给表格标签元素赋值 usernameTd.innerHTML=user.userName; ageTd.innerHTML=user.age; sexTd.innerHTML=user.sex; //组装HTML对象 Tr.append(usernameTd); Tr.append(ageTd); Tr.append(sexTd); document.getElementById("tbody").append(Tr); //append方法添加到某一元素的直接子标签,而table的直接子标签是thead、tfoot、tbody //这里如果改成document.getElementById("table").append(Tr)则无法显示 } } </script> </head> <body> <s:debug></s:debug> <h2>显示值域中json格式的数据 </h2> <table border="1" width="100%" id="table"> <tbody id="tbody"> <th>姓名</th> <th>年龄</th> <th>性别</th> </tbody> </table> <h2> 显示值域中集合的数据 </h2> <table border="1" width="100%"> <tr> <th>姓名</th> <th>性别</th> <th>年龄</th> </tr> <s:iterator value="#request.usersObj" var="user"> <tr> <td><s:property value="#user.getUserName()"/></td> <td><s:property value="#user.getSex()"/></td> <td><s:property value="#user.getAge()"/></td> </tr> </s:iterator> </table> </body> </html>
结果:
原文:http://www.cnblogs.com/shyroke/p/6618036.html