分析:
前后端對于json的使用方式不一樣;json語法格式不做介紹;
前端:
json的引入方式:<script? src=“js/json2.js”><script>;
//刪除方法:delete(key);
操作:
json格式的字符串與json對象的字符串相互轉(zhuǎn)化;
json對象轉(zhuǎn)化為字符串:
formJson{"name":“毛寒”,“ID”:“l(fā)ovewen”};
var Data = JSON.stringify(fromJson);
document.write(Data) == "{"name":“毛寒”,“ID”:“l(fā)ovewen”}";
用ajax傳入java服務(wù)器:
$.ajax({? url :"servlet/Login",
type:"post",
data:"{“mydata”:Data,.......}"
});
java服務(wù)器傳來的json格式字符串,success接收后需要轉(zhuǎn)換為json對象;
var? jsonOBJ = JSON.parse(jsonString);
java服務(wù)器端json技術(shù):
(java環(huán)境下和js環(huán)境下json對象數(shù)據(jù)類型有區(qū)別;因為java和js數(shù)據(jù)類型不同;)
第一步:載入依賴包(v:版本號)
{commons-beanutils-v.jar # commons-collections-v.jar #? commons-lang-v.jar #? commons-logging-v.jar #?ezmorph-v.jar #? json-lib-v.jar ?}? ;
JSONObject類核心功能:
(JSONObject是一個final類繼承了頂級父類object實現(xiàn)了json接口);
JSONObject構(gòu)造方法:
JSONObject ();? ? ?//創(chuàng)建一個空的JSONObject對象;也有帶參構(gòu)造方法;
常用API:(分兩類):
一:json對象與其他類型相互轉(zhuǎn)換:
//測試jsonobj兩類API和jsonAArray;
public void Jsondemo(){
//從其他數(shù)據(jù)obj:(map、Bean、String)構(gòu)建一個json對象;Bean:嚴格規(guī)范的實體類;
? ? //方法一(obj類型轉(zhuǎn)換成jsonobj類型):static JSONObject fromobject(Object obj);
? ? //方法二(反轉(zhuǎn)):static Object JSONObject.toBean(Object object,Class class);
? ? //1.從map構(gòu)建json且反轉(zhuǎn)實例;
? ? Map map =new HashMap();
? ? map.put("name","毛寒");
? ? JSONObject jsonObject = JSONObject.fromObject(map);
? ? System.out.println(jsonObject);
? ? //反轉(zhuǎn):
? ? map = (Map)JSONObject.toBean(jsonObject,Map.class);
? ? System.out.println(map);
? ? //Bean、String:與Map原理一樣,代入即可;
二:對json對象內(nèi)部數(shù)據(jù)執(zhí)行的CRUD和遍歷等操作:
//增加和修改:obj.put(key:value);
//刪除與清空:obj.remove(key); obj.clear();
//遍歷操作:
JSONObject object =new JSONObject();
object.put("name1","毛寒");
object.put("name2","毛寒子");
object.put("name3","雯兒");
object.put("name4","雯雯");
object.put("name5","可可");
String name = object.getString("name3");
System.out.println(name);
//遍歷(迭代器方法進行遍歷);
Iterator keys = object.keys();
Object obj;
while (keys.hasNext()){
obj = jsonObject.get(keys.next());
? ? System.out.println(obj);
}
JSONArray類:
相當(dāng)于js中的json對象那個數(shù)組;java服務(wù)端JSONArray對象可封裝從數(shù)據(jù)庫獲取的對象集合(結(jié)果集)并與前端js環(huán)境下的json對象數(shù)組相對應(yīng);(操作方法基本和javaArray相同);
構(gòu)造器:JSONArray obj = new?JSONArray();
對象轉(zhuǎn)化:JSONArray.formObject(object);? ? object:一般是集合對象;List、Array以及符合要求的把實體對象數(shù)組轉(zhuǎn)化為JSONArray對象;
增加、修改、刪除:add(JSONObject)//必須是JSONObject對象;remove(int? index);toArray()[index];
前后端分離:
前端頁面中的關(guān)鍵變量名最好與實體類中成員變量名保持一致;方便json對象與實體類對象之間的轉(zhuǎn)換;