JSON:
JSON:是一个JavaScript语言的一个子集,所以可以使用JavaScript来解析json数据
基本语法:
{} :表示的是一个对象
[] :表示的是数组
“” :表示普通的字符串
: :用于属性名和属性值的表示,如:name:“张三”
, :用于分割不同的元素(属性或者方法)
把数据转换成JSON格式,可以使用json.jar工具来进行转换
①、普通数据转换json:
测试类:
Demo:
实体类:
City:
②、把struts的数据存放在值栈中(可以使用struts-json-plugin.jar是struts整合json的工具):
实体类:
City:
Action:
CityAction:
Struts.xml:
在使用struts的时候需要把数据变成json格式,在struts.xml中将result的type为json,并且在extends的文件不在是struts-default
而是json-default,还需要就是设置一个固定的参数为root,值为存在值栈的数据
测试的jsp:
JSON:是一个JavaScript语言的一个子集,所以可以使用JavaScript来解析json数据
基本语法:
{} :表示的是一个对象
[] :表示的是数组
“” :表示普通的字符串
: :用于属性名和属性值的表示,如:name:“张三”
, :用于分割不同的元素(属性或者方法)
把数据转换成JSON格式,可以使用json.jar工具来进行转换
①、普通数据转换json:
测试类:
Demo:
package example_demo1;
import java.util.ArrayList;
import java.util.List;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.junit.Test;
public class Demo {
@Test
public void Test01(){
//把数组数据转换成json格式
String[] str = new String[]{"zs","sd"};
String str1 = JSONArray.fromObject(str).toString();
System.out.println(str1);
}
@Test
public void Test02(){
//把一个bean对象的数据转换成json格式
City city = new City(1, "xs", new String[]{"cxc"});
String s = JSONObject.fromObject(city).toString();
System.out.println(s);
}
@Test
public void Test03(){
//把一个集合的数据转换成json的格式
List<City> list = new ArrayList<City>();
list.add(new City(1, "xs", new String[]{"cxc","sd","fs"}));
list.add(new City(2, "fas", new String[]{"tq","gs","er"}));
list.add(new City(3, "ga", new String[]{"hsc","gsA","hd"}));
//得到的是一个数组,可以遍历读取
//Object[] array = JSONArray.fromObject(list).toArray();
// for(Object o : array){
// System.out.println(o);
// }
String array = JSONArray.fromObject(list).toString();
System.out.println(array);
}
}
实体类:
City:
package example_demo1;
import java.util.Arrays;
public class City {
private int id;
private String name;
private String[] address;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String[] getAddress() {
return address;
}
public void setAddress(String[] address) {
this.address = address;
}
public City() {
super();
// TODO Auto-generated constructor stub
}
public City(int id, String name, String[] address) {
super();
this.id = id;
this.name = name;
this.address = address;
}
@Override
public String toString() {
return "City [id=" + id + ", name=" + name + ", address="
+ Arrays.toString(address) + "]";
}
}
②、把struts的数据存放在值栈中(可以使用struts-json-plugin.jar是struts整合json的工具):
实体类:
City:
package example_demo1;
import java.util.Arrays;
public class City {
private int id;
private String name;
private String[] address;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String[] getAddress() {
return address;
}
public void setAddress(String[] address) {
this.address = address;
}
public City() {
super();
// TODO Auto-generated constructor stub
}
public City(int id, String name, String[] address) {
super();
this.id = id;
this.name = name;
this.address = address;
}
@Override
public String toString() {
return "City [id=" + id + ", name=" + name + ", address="
+ Arrays.toString(address) + "]";
}
}
Action:
CityAction:
package example_json_web;
import java.util.ArrayList;
import java.util.List;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class CityAction extends ActionSupport {
public String list(){
List<City> citys = new ArrayList<City>();
citys.add(new City(1, "深圳市"));
citys.add(new City(2, "阳江市"));
citys.add(new City(3, "茂名市"));
ActionContext.getContext().put("citys", citys);
return SUCCESS;
}
}
Struts.xml:
在使用struts的时候需要把数据变成json格式,在struts.xml中将result的type为json,并且在extends的文件不在是struts-default
而是json-default,还需要就是设置一个固定的参数为root,值为存在值栈的数据
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="base" extends="json-default" namespace="/">
<action name="city_*" class="example_json_web.CityAction" method="{1}">
<result type="json">
<param name="root">#citys</param>
</result>
</action>
</package>
</struts>
测试的jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript">
window.onload = function(){
var ajax=null;
try{
ajax = new XMLHttpRequest();
}catch(e){
ajax = new ActiveXObject();
}
var province = document.getElementById("province");
ajax.onreadystatechange = function(){
if(ajax.readyState==4 && ajax.status==200){
var data = ajax.responseText;
data = eval("("+data+")");
for(var i=0;i<data.length;i++){
var opt = document.createElement("option");
opt.setAttribute("value", data[i].id);
opt.innerHTML = data[i].name;
province.appendChild(opt);
}
}
};
ajax.open("GET", "<c:url value='/city_list'/>");
ajax.send(null);
};
</script>
</head>
<body>
<select id="province">
</select>
</body>
</html>