web客户端,服务端,android客户端关于JSON的使用分析


       最近在做关于微薄项目的开发,瞬间发现JSON这种强大的数据传输格式。JSON(javaScript Object Notion)是,目前较为流行的数据传输格式,相对于XML,JSON的优点可谓多多,第一:在大小上,所占的空间小;第二:在传输解析上,xml的解析通常需要ASP解析器进行解析,但是json一般只需要导入相应的包进行解析即可,第三:书写上比XML来的简单易懂,对象的创建类似于简单化的Java类的创建。总而言之,简单易用。但是今天我们要讲的是,它在不同端的使用的具体区别。

      先讲web客户端的使用,当服务器端传来一段json格式的字符串后,我们可以采取两种方式进行解析:

     1)第一种:使用javaScript自带的eval()函数进行解析

var jsonObj2=eval("("+strObj2+")");

其中:需要注意的考虑到安全性问题,我们一般不建议使用eval()进行解析json格式的字符串

       2)第二种:使用json.js文件进行解析。下载地址:json.js

         将json字符串解析成JSONObject的对象的常用的方法是JSON.parse(str);其中str是json格式的字符串文本

var strObj='{"name":"srtzzjmay"}';
    	
    	var jsonObj=JSON.parse(strObj);
    	
    	alert(jsonObj);
    	alert(jsonObj.name);
        同时该工具也提供将json对象转化成json格式的字符串,使用的方法是toJSONString(obj)

alert(jsonObj.toJSONString());

说完web客户端后,当然很多人往往更加关注的是服务器端的使用,因为json字符串的来源莫过于都是服务器传递过来的。

在我们使用服务器端进行json编程时,我们要导入一些JSON专用的包,大家可以去JSON的官网下载对应的包,这里有我整理好的json要用到JAR包整合资源json.jar

服务器端使用JSON要用到两大类,JSONObject和JSONArray

1)JSONObject的使用

常用的方法有:

1.fromObject(object | str):将对象或字符串对象封装成JSONObject

               //将Java对象的转化成JSON对象
		
		Person person=new Person("zzjmay", 18,"male");
		
		//fromObject(object)默认复写了toString()的方法
		System.out.println(JSONObject.fromObject(person));
		
		//json字符串转化为JSON对象
		
		String string ="{\"age\":20,\"name\":\"zzjmay\",\"sex\":\"female\"}";
		String mess="{\"mess\":\"验证码不正确\",\"flag\":false}";
		
		
		JSONObject jsonObject=JSONObject.fromObject(string);
		JSONObject jsonObject2=JSONObject.fromObject(mess);
		
		System.out.println(jsonObject2);
2.put(key,value):用于向JSONObject动态添加一些程序员自己需要的键值对
	JSONObject jsonObj=new JSONObject();

	jsonObj.put("mesage",Object);//这里的Object可以是对象或者字符串或者集合
3.toBean(JSONObject jsonobj,Class class):作用将JSON对象转化成我们自定义的JavaBean

	//将JSON对象转化成我们的java对象
		
		Person person2=(Person) JSONObject.toBean(jsonObject, Person.class);
		
		System.err.println(person2.toString());
4.containKeys(String key):用于判断JSONObject中是否包含某键值
2)JSONArray的使用

常用方法:

1.FromObject(Object obj):这里不再赘述,和JSONObject是一样的用法


最后我们来说Android客户端的JSON编程,相比前面两个端的编程来讲,Android不需要导任何包,因为Android本身的SDK就是就已经帮我们支持了JSON的编程,并有适合Android使用的类:JSONObject和JSONArray。也许读者一开始看到会觉得这和服务器端的不是一样的吗,但是就我看源码而言,还是有很大差别的,在对象方法的使用中既有相同也有不同。那么接下来我就以JSONObject来说说有什么不同。

首先,在Android中JSONObject不存在fromObject()的方法,因此我们要将我们的对象封装成JSONObject,采用的方法使用其提供的构造器

	JSONObject jsonObj=new JSONObject(Object);
最后我想分享的是在我Android编程遇到的问题,很多时候在获取JSONObject对象的键时我们一般使用的get(String str)方法,但是会出现一个很严重的问题,就是当键不存在是会抛出JSONException的异常,那么要解决这个问题我们想到的都是先进行判断,那我们还用上面讲的containKeys方法吗?当然不是,Android中有自己的独特的方法,而且还不会抛出异常,当然发现还要靠我仔细阅读了英文帮助文档。

方法是:isNUll(String str):返回True说明不存在该键所对应的值

	if (!jsonObject.isNull("thumbnail_pic")) {
				// 说明图片不为空

				hodler.weibo_content_img = (ImageView) view
						.findViewById(R.id.weibo_content_img);
				hodler.weibo_content_img.setVisibility(View.VISIBLE);

			}



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值