JSONObject JSONArray 各種用法以及js eval()函式
一、在後臺使用JSONObject物件,並將從資料庫中取出來的資料直接使用 JSONObject的put方法放進去,再將這個JSONOject物件使用JSONArray的add()方法新增進去,這樣就是一個儲存了json物件的陣列,在後臺將JSONArray物件使用toString()方法傳到前臺這時前臺的接受方式是json ,再將接受的這個資料使用eval()函式轉化為json格式的js物件,在使用迴圈就可以取出其值。
1、前臺:
dataType:"json", //返回值型別
success:function(jsons){ //獲取資料
//
alert("成功");
var datas= eval(jsons); // 格式轉化 ,將後臺傳遞的string 轉化為json物件
//其實轉化之後獲取的是一個json陣列,而每一行就是一個後臺的物件而這裡是
//以json的物件格式存在的
//json陣列格式:[{"name":"www","age":11,"class":"one"},
{"name":"www2","age":112,"class":"on2e"},
{"name":"www3","age":114,"class":"on4e"}
]
alert("長度"+datas.length);
for(vari=0;i<datas.length;i++){ //迴圈將其中每個物件的屬性取出
$("#con").append(datas[i].param1+" "+datas[i].param2 +"<br>");
}
} ,
2、後臺:
try {
PrintWriterout = response.getWriter();
JSONArrayjar = new JSONArray();
// 通過迴圈每次建立物件並且新增資料並把每一個物件新增到集合中去,
for(inti=0;i<3;i++){
JSONObjectjsonObject = new JSONObject();
jsonObject.put("param1","one"+i);
jsonObject.put("param2","two"+i);
jar.add(jsonObject);
}
out.print(jar.toString());
out.flush();
out.close();
3、前面的迴圈在實際開發中使用方式:
String msql ="select * from storage";
Statementmstat = (Statement) conn.createStatement();
ResultSetmresultSet = mstat.executeQuery(msql);
JSONArrayarray = new JSONArray();
while(mresultSet.next()){
JSONObjecto = new JSONObject();
o.put("storageId",mresultSet.getString("storage_id"));
o.put("storageType",mresultSet.getString("store_type"));
array.add(o);
}
// 將其轉化為字串輸出
returnarray.toString();
二、在後臺的JSONObject 物件使用formObject()方法向其中新增一個物件,之後再將其轉化為toString()型別
在前臺接受方式為json 在前臺使用eval()轉化不然會出錯,但是不能使用迴圈
1、前臺:
dataType:"json", //返回值型別
success:function(jsons){
var datas= eval(jsons); //轉化格式
$("#con").append("<br>"+datas.name +" "+datas.age);
2、後臺:
JSONObject jsonObject= new JSONObject();
jsonObject.fromObject(u1);
Out.println(jsonObject.fromObject(u1).toString());
或
String sss=jsonObject.fromObject(u1).toString();
out.print(sss);
三、 後臺傳遞一個集合,在前臺進行接受輸出。
在平時的開發中都會將獲取的資料儲存在一個集合中如list集合,這時使用 JSONArray 物件的 JSONArrayjsonarray=jar.fromObject(list); fromObject 方法將其從java變成json 陣列,這時如果不繁瑣 則可以直接將json陣列輸出,但平時為了在傳遞的過程中方便我們將json陣列轉變為string 型別, String strs = jsonarray.toString(); 之後在進行傳遞 , 在前臺我們接受的是tostring () 型別的話我們就要使用eval() 函式進行解析,在遍歷輸出:
1、前臺:
dataType:"json", //返回值型別
success:function(jsons){
var datas= eval(jsons); //轉化格式
alert("長度"+datas.length);
for(vari=0;i<datas.length;i++){
$("#con").append(datas[i].name+" "+datas[i].age +"<br>");
} } ,
2、後臺:
list.add(u1); // 新增u物件
list.add(u2);
JSONArray jar= new JSONArray ();
JSONArray jsonarray=jar.fromObject(list);
Stringstrs = jsonarray.toString();
out.print(jsonarray); //傳遞陣列
out.print(strs); //傳遞string型別
out.flush();
out.close();