json入门实例

简单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(); 

}

原文地址:https://www.cnblogs.com/Leo_wl/p/2435509.html