学习笔记-------JAVA后台处理JSON对象通过AJAX的XMLHttpRequest取得Json对象以及JS处理json对象全过程

1.0JAVA后台对JSON数据的处理:

  1.1处理JSON对象

  后台收到request请求后,经过具体业务处理(此处略)返回一个JSON对象并发送到XMLHttpRequest中,本例生成一个含有   JSON对象以及JSONArray数组的复杂JSON对象,代码如下:

       String longStr ="{ 'desc': 'OK', 'status': 1000, 'data': { 'wendu': '20',"
    			+ " 'ganmao': '相对于今天将会出现大幅度降温,易发生感冒,请注意适当增加衣服,加强自我防护避免感冒。',"
    			+ " 'forecast': [ { 'fengxiang': '北风', 'fengli': '3-4级', 'high': '高温 27℃', 'type': '中雨', 'low':"
    			+ " '低温 19℃', 'date': '6日星期五' }, { 'fengxiang': '北风', 'fengli': '微风级', 'high': '高温 23℃', "
    			+ "'type': '大雨', 'low': '低温 17℃', 'date': '7日星期六' }, { 'fengxiang': '北风', 'fengli': '微风级',"
    			+ " 'high': '高温 26℃', 'type': '小雨', 'low': '低温 17℃', 'date': '8日星期天' }, { 'fengxiang': '南风',"
    			+ " 'fengli': '微风级', 'high': '高温 27℃', 'type': '多云', 'low': '低温 15℃', 'date': '9日星期一' }, "
    			+ "{ 'fengxiang': '南风', 'fengli': '微风级', 'high': '高温 29℃', 'type': '多云', 'low': '低温 16℃', "
    			+ "'date': '10日星期二' } ], 'yesterday': { 'fl': '微风', 'fx': '北风', 'high': '高温 33℃', 'type': '阴',"
    			+ " 'low': '低温 22℃', 'date': '5日星期四' }, 'aqi': '58', 'city': '成都' } }";

处理字符串的原则是,如果看到“{”那就一个字符串形式的JSON对象,如果看到“[”就表明是一个JSONArray对象

首先将字符串生成JSON对象:

JSONObject obj = new JSONObject();
obj = JSONObject.fromObject(longStr);

生成的JSON对象其实是由两个键-值对数据以及一个名为data的复杂JSON对象组成的

{ 'desc': 'OK', 'status': 1000, 'data': JSONobject"}

JSON对象的取值:

String valuStr = obj.getString("desc");//取得JSON对象中key为desc的值

取得JSON对象中的JSON对象:

JSONObject dataObj = (JSONObject)obj.get("data");

该对象中又是一个包含JSON对象的集合:

 {'wendu': '20', 'ganmao': '相对于今天将会出现大幅度降温,易发生感冒,请注意适当增加衣服,加强自我防护避免感冒。','forecast':JSONArray}

取得JSON对象中的JSONArry对象。调用get方法:

JSONArray jarr = new JSONArray();
JSONObject dataObj = (JSONObject)obj.get("data");//get方法取得JSON对象中的JSON对象
jarr = (JSONArray)dataObj.get("forecast");//从JSON对象中取出key为forecast的JSONArray

JSONArray是一个由JSON对象组成的数组,可以简单的用循环来取得每一个对象

for(int i=0;i

至此所有JSON对象拆分完毕,可以进行相应操作。

  1.2将JSON对象发送至前台

 JSONObject obj = new JSONObject();
 obj = JSONObject.fromObject(longStr); //将字符串生成JSON对象
 response.setContentType("text/html;charset=utf-8"); //防止乱码
 response.getWriter().print(obj);

2 JS处理后台的JSON对象

 页面通过XMLHttpRequest的responseText取得该JSON对象:

xmlhttp.responseText

该方法处理的JSON对象是上边讲的复杂JSON数组

function doJsong(JSONobj){
	//JSONobj 为 xmlhttp.responseText 取得后台返回的JSON对象
	var json = eval("("+JSONobj+")"); //调用eval方法生成js的json对象;
	var jjson= json.data.forecast; //JSON对象的值或者其中的对象可以简单的通过对象的key取得即JSON对象.KEY
	var jsonObj = JSON.parse(JSON.stringify(jjson));//转换为json对象
	var jsonstr = JSON.stringify(jsonObj[0]);//转换为字符串,取得JSON对象中的JSONArray
	var obj =  JSON.parse(jsonstr);//这里转来转去只是测试该方法
	var str = "";
	for(var p in obj){
		str = str+obj[p]+","; 
        alert(str);
	}
}
该笔记仅为本人记录之用,如有不对,请指点,在此感谢。





你可能感兴趣的:(java,JavaScript)