学习笔记-------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<jarr.size();i++){
    		job = (JSONObject)jarr.get(i);
    		String s = job.get("date").toString();
			System.out.println("fengxiang :"+ job.get("fengxiang"));
			System.out.println("fengli :"+ job.get("fengli"));
			System.out.println("high :"+ job.get("high"));
			System.out.println("type :"+ job.get("type"));
			System.out.println("low :"+ job.get("low"));
			System.out.println("date :"+ job.get("date"));
    	}

至此所有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);
	}
}
该笔记仅为本人记录之用,如有不对,请指点,在此感谢。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值