简单JSON实例
首先我们创建一个叫做User的简单对象。代码如下:
User.java
public class User{
private Integer userId;
private String userName;
private String password;
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
(转载请注明出处:[url=http://www.live588.org]淘金盈[/url] [url=http://www.tswa.org]博彩通[/url] [url=http://www.nsdm.org]澳门博彩[/url] [url=http://www.lixx.org]博彩网[/url][url=http://www.uvip.org]e世博[/url][url=http://www.10086money.com]时尚资讯[/url][url=http://262002954-qq-com.iteye.com]flex[/url][url=http://flexflex.iteye.com]flex[/url])
然后我们要位User这个简单对象构建JSON,我们构建的JSON还能统计JSON中User对象个个数,这里我们新建一个TotalJson对象
TotalJson.java
import java.util.List;
public class TotalJson {
private long results;//数据长度
private List items;//数据条目
public long getResults() {
return results;
}
public void setResults(long results) {
this.results = results;
}
public List getItems() {
return items;
}
public void setItems(List items) {
this.items = items;
}
}
最后我们写一个客户端来测试JSON的使用,代码如下
Test2.java
import java.util.ArrayList;
import java.util.List;
import net.sf.json.JSONObject;
public class Test2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
List<User> list = new ArrayList<User>();
//创建用户1
User user1 = new User();
user1.setUserId(1);
user1.setUserName("zhangsan");
list.add(user1);
//创建用户2
User user2 = new User();
user2.setUserId(2);
user2.setUserName("lisi");
list.add(user2);
//创建JSON对象
JSONObject JsonOb=getJsonFromList2(list);
System.out.println("JsonOb:"+JsonOb);
/**
* 输出结果:
* JsonOb:{
* "items":[
* {"password":"","userId":1,"userName":"zhangsan"},
* {"password":"","userId":2,"userName":"lisi"}],
* "results":2}
*/
}
/**
* 将List数组转化为JSON数据格式
* @param beanList 要转化的List数组
*/
public static JSONObject getJsonFromList2(List beanList) {
return getJsonFromList2(beanList.size(), beanList);
}
/**
* 将List数组转化为Json数据格式
* @param recordTotal List数组长度
* @param beanList 要转化的List数组
*/
public static JSONObject getJsonFromList2(long recordTotal, List beanList) {
TotalJson total = new TotalJson();
total.setResults(recordTotal);
total.setItems(beanList);
JSONObject JsonObject = JSONObject.fromObject(total);
return JsonObject;
//return JsonObject.toString();
}
}
输出结果:
JsonOb:{"items":[{"password":"","userId":1,"userName":"zhangsan"},{"password":"","userId":2,"userName":"lisi"}],"results":2}
从输出结果我们可以看出,这个JSON中有两条记录,两条记录如下表格所示。
userId userName password
1 zhangsan
2 lisi 值得注意的是我们会发现,JsonOb中,items和results字段是在TotalJson对象中定义的,而Items中的password,userId,userName则是在User这个简单对象中定义的。这个就是通过JSONObject.fromObject(total)这个方法来实现的。其中total是TotalJson对象。
4.Extjs+JSON实例
4.1.Extjs前台代码:
var userStore = new Ext.data.Store( {// 定义数据集对象
proxy : new Ext.data.HttpProxy( {
url : 'user.do?method=getUserList×tamp=' + new Date()// 设置代理请求的url
}),
// reader : new Ext.data.XmlReader( {// 创建xml数据解析器
// totalRecords : "results",
// record : "UserForm",// 对应的Form,下面的字段名与此Form中的相同,数量可以不同
// id : "userId"
// }, Ext.data.Record.create( [ {
// name : 'userId'
// }, {
// name : 'userName'
// }, {
// name : 'realName'
// }, {
// name : 'roleId'
// }, {
// name : 'telephone'
// }, {
// name : 'email'
// }, {
// name : 'address'
// }, {
// name : 'remark'
// } ]))
reader: new Ext.data.JsonReader({
totalProperty : 'results',
root : 'items',
id: 'userId'
},
['userId','userName','realName','roleId','telephone','email','address','remark'])
});
var toolbar = new Ext.Toolbar( [ {// 创建GridPanel的工具栏组件
text : '新增员工信息',
iconCls : 'add',
handler : addUser
}, {
text : '删除员工信息',
iconCls : 'remove',
handler : deleteUser
}, {
text : '修改员工信息',
iconCls : 'plugin',
handler : updateUser
}
, '-','查询:',' ', new Ext.ux.form.SearchField( {
store : userStore,
width : 110
})
]);
var sm = new Ext.grid.CheckboxSelectionModel();// 创建复选择模式对象
var cm = new Ext.grid.ColumnModel( [// 创建表格列模型
new Ext.grid.RowNumberer(), sm, {
header : "编号",
width : 30,
dataIndex : 'userId',
hidden : true,
sortable : true
}, {
header : "用户名",
width : 60,
dataIndex : 'userName',
sortable : true
}, {
header : "真实姓名",
width : 60,
dataIndex : 'realName',
sortable : true
}, {
header : "用户角色",
width : 60,
dataIndex : 'roleId',
sortable : true
}, {
header : "联系电话",
width : 60,
dataIndex : 'telephone',
sortable : true
}, {
header : "电子邮箱",
width : 80,
dataIndex : 'email',
sortable : true
}, {
header : "住址",
width : 80,
dataIndex : 'address',
sortable : true
}, {
header : "备注",
width : 60,
dataIndex : 'remark'
} ]);
var userGrid = new Ext.grid.GridPanel( {// 创建Grid表格组件
applyTo : 'user-grid-div',// 设置表格现实位置
frame : true,// 渲染表格面板
tbar : toolbar,// 设置顶端工具栏
stripeRows : true,// 显示斑马线
autoScroll : true,// 当数据查过表格宽度时,显示滚动条
store : userStore,// 设置表格对应的数据集
viewConfig : {// 自动充满表格
autoFill : true
},
sm : sm,// 设置表格复选框
cm : cm,// 设置表格的列
bbar : new Ext.PagingToolbar( {
pageSize : 25,
store : userStore,
displayInfo : true,
displayMsg : '显示第{0}条到{1}条记录,一共{2}条记录',
emptyMsg : '没有记录'
// ,items:['-',new Ext.app.SearchField({store:userStore})]
})
});
userStore.load( {// 加载数据集
params : {
start : 0,
limit : 25
}
});
4.2.Java后台代码(解决json 中文乱码):
JSONObject JsonOb=ExtHelper.getJsonFromList2(list);//将list装换成JSONObject
System.out.println("JsonOb:"+JsonOb);//后台输出
// response.setContentType("text/xml;charset=UTF-8");
response.setContentType("text/json;charset=UTF-8");//解决前台显示中文乱码问题
response.getWriter().write(JsonOb.toString());
JSON实例应用
文章分类:Web前端
JSON实际就是一种数据格式,传递数据,特别的地方在于:JSON的数据格式可以直接构成JavaScript中的一个对象,因些可以在JavaScript很易容访问到它的数据。(个人的见解,关于JSON的其它资料可以去google一下)
下面就应用一下JSON:
使用JSON需要一些文件:将js对象转化成JSON的数据格式的JS如:json.js
将Java对象转化成JSON的数据格式的jar包:json-lib-2.3-jdk15.jar等可以在下面的附件中获得
我在我的工程中引入了这个文件(也可以不用这个文件,那么你需要自己在js或class中拼成JSON格式的数据)
Html代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>JSON学习</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">
<script type="text/javascript" src="js/json.js"></script>
</head>
<script language="javascript">
var xmlHttp;
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}
function doJSON(){
var car = getCarObject();
//将JS对象转化成JSON格式的Text
var carAsJSON = JSON.stringify(car);
alert(carAsJSON);
var url = "JsonTest1?timeStamp="+new Date().getTime();
createXMLHttpRequest();
xmlHttp.open("POST", url, true);
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp.send(carAsJSON);
}
//Ajax的回调方法
function handleStateChange(){
if(xmlHttp.readyState == 4){
if(xmlHttp.status == 200){
parseResults();
}
}
}
//具体的回调作动
function parseResults(){
var responseDiv = document.getElementById("serverResponse");
if(responseDiv.hasChildNodes()){
responseDiv.removeChild(responseDiv.childNodes[0]);
}
//xmlHttp.responseText是servlet中返回回来的JSON格式的数据,将它创建成一个js的node对象放到DIV中
var responseText = document.createTextNode(xmlHttp.responseText);
responseDiv.appendChild(responseText);
//将json格式的Text转化成JSON对象:用eval('('+response+')')
var resultJson = eval('('+xmlHttp.responseText+')');
alert(resultJson);
alert(resultJson.make);
alert(resultJson.model);
alert(resultJson.year);
alert(resultJson.color);
}
//JS中的一个对象
function Car(make,model,year,color){
this.make = make;
this.model = model;
this.year = year;
this.color = color;
}
//构成对象并返回
function getCarObject(){
return new Car("Dodge", "Coronet R/T", 1968, "yellow");
}
</script>
<body>
<form action="#">
<input type="button" value="Click here to send JSON data to the server" onclick="doJSON();"/>
</form>
<h2>Server Response:</h2>
<div id="serverResponse">
</div>
</body>
</html>
在我的servlet中实现如下:
Java代码
public class JsonTest1 extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 306348969081510518L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String json = readJSONStringFromRequestBody(request);
System.out.println("json = " + json);
//将request中接收的字符串转化成json对java对象
JSONObject jsonObject = JSONObject.fromObject(json);
System.out.println("jsonObject = " + jsonObject.toString());
System.out.println(jsonObject.getInt("year"));
System.out.println(jsonObject.getString("make"));
System.out.println(jsonObject.getString("model"));
System.out.println(jsonObject.getString("color"));
//设置返回的格式是text
response.setContentType("text/plain");
response.getWriter().print(jsonObject);
}
private String readJSONStringFromRequestBody(HttpServletRequest request) {
StringBuffer json = new StringBuffer();
String line = null;
try {
BufferedReader bufferRead = request.getReader();
while ((line = bufferRead.readLine()) != null) {
System.out.println("line = " + line);
json.append(line);
}
} catch (Exception e) {
e.printStackTrace();
}
return json.toString();
}
}