js json map對象傳給java後臺接收

前臺用到:json2.js,jquery.jsjava

後臺用到:json.jar(調用方法:import net.sf.json.JSONObject;)jquery

前臺簡要代碼:            ajax

……
//拼裝JSON格式數據json
varjson={
"edit:[
  {
     "bh":"11111","mc":"11111","dbms":"ORACLE9i","dwmmc":"","addr":"",
     "username":"","password":"","rm_sz":"ck","nyr_sz":"","id":"-1"
  },
  {
     "bh":"121","mc":"12","dbms":"ORACLE9i","dwmmc":"12","addr":"12",
     "username":"12","password":"12","rm_sz":"ck","nyr_sz":"2011-09-06","id":"13"
  }
],
"del":["12"]
};

varpost={data:JSON.stringify(json)};//JSON.stringify(json)把json轉化成字符串
$.post(url,post);
……

後臺簡要代碼:            json

 ……
JSONObjectjson=JSONObject.fromObject(request.getParameter("data"));
List<Map<String,String>>edit=(List<Map<String,String>>)json.getJSONArray("edit");
List<?>del=(List<?>)json.getJSONArray("del");
 
//下面的操做就很少講了
……

 

前臺json格式的數據如何傳入後臺數組

1. 將要傳入後臺的數據組裝成JSON格式的字符串:服務器

var jsonStr = [{'name':'jim' , 'age':20} , {'name':'king' , 'age':26},{'name':'jge' , 'age':30}]

2. 使用JQuery的ajax請求後臺app

jQuery.ajax({
   type: "post",
   url: url,
   dataType : 'json',
   data : {'mydata':jsonStr},
   success: function(data,textStatus){
   alert("操做成功");
},
error: function(xhr,status,errMsg){
   alert("操做失敗!");
}
});

3.後臺數據的接收與解析:post

String jsonStr = ServletActionContext.getRequest().getParameter("mydata");
JSONArray jsonArray = JSONArray.fromObject(jsonStr);
for(int i=0;i<jsonArray.length(); i++){
   JSONObject jsonJ = jsonArray.getJSONObject(i);
   jsonJ.getInt("name");
   jsonJ.getString("age");
}

 

4. 操做完成url

 

1、傳值頁面

 

一、定義一個jsonspa

var retVal = JSON.parse("{}");

二、在retVal內注入兩個值

retVal .aa= 'aaStr';
retVal .bb= 'bbStr';

三、使用JSON.stringify();  stringify()用於從一個對象解析出json字符串

window.returnValue=JSON.stringify(retVal );

例如:

//stringify()用於從一個對象解析出字符串,如

var a = {a:1,b:2};

//結果:

JSON.stringify(a);//"{"a":1,"b":2}"

//傳值json數組

var oResult=new Object();//定義一個對象

for(var i=0;i<iRow;i++){
    var rd = JSON.parse("{}");//定義一個json
    rd.AAT026=orgRelQuery.getCellValueById(i,"AAT026");//爲json注入值
    rd.AAT028=orgRelQuery.getCellValueById(i,"AAT028");
    rd.AAT001=orgRelQuery.getCellValueById(i,"AAT001");
    oResult[i] =rd;//爲oResult 對象 注入json格式字符串
}//循環注入造成數組

result=JSON.stringify(oResult);//解析出json數組

2、接收頁面

一、接收傳值頁面的返回值 (retVal爲傳值頁面的返回值)

var result = JSON.parse(retVal );  

二、獲取數據

var aa = result.aa;
var bb = result.bb;

parse用於從一個字符串中解析出json對象,如

var str = '{"name":"huangxiaojian","age":"23"}'

結果:

JSON.parse(str)

或者例如:

var resultArr = JSON.parse(result); 
//resultArrlength--resulrArr長度
for(i=0;i<resultArrlength;i++){
   //校驗有沒有選擇公司
   resultArr[i].abt002;
}

 

三、在JAVA中操做json 數據

依賴jar:

還須要導入這些包
commons-beanutils-1.7.0.jar   
commons-lang-2.1.jar  
ezmorph-1.0.2.jar  
commons-collections.jar  
commons-logging-1.0.4.jar 
json-lib-2.4-jdk15.jar

a.新建json 數據

Gd016 gd016 = (Gd016)get(Gd016.class, gdk016);//反射獲得實例對象  
JSONObject json =JSONObject.fromObject(gd016);//將實例對象轉化爲json對象(將對象gd016的全部屬性和值以key和value的形式寫入json對象中)  
json.accumulate("xmlflag", xmlflag);//json對象內添加元素(在json對象中動態添加key和value鍵值對) 
businessXML.setOutObject("json", json.toString());//調用 json.toString()方法,使剛剛生成的json數據以String形式傳遞

 

b.解析json數據

(1)response.setContentType(   "application/json" );   //服務器響應的類型

String jsonString =   request.getParameter("testJsonString");  //獲取傳過來的json字符串
JSONObject jsonobj = JSONObject.fromObject(jsonString); //把 json格式的字符串轉化爲json對像
System. out .println( "name:" +jsonobj.getString( "name" )+ ",age:" +jsonobj.getInt("age"));
輸入結果: name:james,age:29---------------------------------【json字符串和新建方法相似】

(2)把json數組形式的字符串轉化爲json數組,再解析出來
// [{"name":"olay","age":21},{"name":"james","age":22},{"name":"kobe","age":34}]
response.setContentType( "application/json" );   //服務器響應的類型
String jsondata = request.getParameter(   "testJsonArray" );  //獲取傳過來的json字符串
System.out.println(jsondata);    // [{"name":"olay","age":21},{"name":"james","age":22},{"name":"kobe","age":34}]---必須是格式「[ {  } ]」

JSONArray jsonArray = JSONArray.fromObject(jsondata); //轉化爲json數組-------JSONArray對象獲得數組
for ( int   i=0;i<jsonArray.size();i++){   //遍歷json數組
     JSONObject obj = JSONObject.fromObject(jsonArray.get(i));//轉化爲json對象---------json字符串解析
     System. out .println( "name:"   +obj.getString( "name" )+   ",age:" +obj.getInt( "age"   ));
}

(3)java中lst集合轉爲爲json數組

User user1 =   new   User();
user1.setName(   "james" );
user1.setAge(29);
User user2 =   new   User();
user2.setName(   "olay" );
user2.setAge(22);  

List   list =   new   ArrayList ();
list.add(user1) ;
list.add(user2) ;

JSONArray arr = JSONArray. fromObject (list);  // lst集合轉爲爲json數組
System.   out .println(arr);    // [{"age":29,"name":"james"},{"age":22,"name":"olay"}]


(4)java中Map集合轉化爲json二位數組

Student student =   new   Student();
student.setName(   "張三" );
student.setAge(15);
student.setSex(   "男" );
       
Teacher teacher =   new   Teacher();
teacher.setName(   "梨花" );
teacher.setAge(29);
teacher.setSex(   "女" );

Map   map =   new   HashMap ();
map.put( "student" , student) ;
map.put( "teacher" , teacher) ;

JSONArray arrMap = JSONArray. fromObject (map);  // Map集合轉化爲json二位數組

System.out.println(arrMap);  // [{"student":{"age":15,"name":"張三","sex":"男"},"teacher":{"age":29,"name":"梨花","sex":"女"}}]
相關文章
相關標籤/搜索