Android中JSON数据解析:系统自带JSONObject以及第三方GSON的实现

                  最近公司开发项目中有用到JSON数据,需要解析,因为app开发用到了js的一些框架,从js那边传递过来的数据基本都是JSON数据类型,在Android这边就需要用到数据解析了。百度上面的解释:JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式,简单地说,json就是一种特殊的数据格式。好了,进入正文.

          android中对JSON数据的解析有两种办法:官方自带JSONObject,以及第三方开源库,如GSON,FastJson,Jackson.这里我们只介JSONObject和第三方GSON的使用。

        1.GSON的使用

          1.去github去下载jar包,目前下载的是gson-2.2.4这个版本:下载

                        2.导入到自己项目,并且添加依赖:

                       ,

                       3.因为JSON数据不是很好模拟,所以,下面以及之后我都用Java中String类型去转换Json数据演示。

     2.使用详解

                  gson.jar包中有两个方法:toJson()是将Java中字符串转换成JSON字符串,fromJson()是将JSON字符串转换成Java字符串

                2.1转换字符串:

                   String name ="nanyin";
   Gson gson = new Gson();
   String jsonname =gson.toJson(name);//将Java中字符串转换成JSON字符串

	 Log.i(TAG,"name:"+name);
	 Log.i(TAG,"jsonname:"+jsonname);//我们看一下json的打印信息:
	        	
	可以看到jsonname带上了""号,这就是JSON数据的标志.然后我们将JSON字符串jsonname通过fromjson方法转换为String字符串。
	String jsontostring = gson.fromJson(jsonname,String.class);
	Log.i(TAG,"jsontostring:"+jsontostring+"jsontoage:"+jsontoage);//nanyin 
         gson.fromJson(String json, Class<String>classOfT)这个方法,第一个参数是json字符串,第二个参数是一个类,对于基本数据类型来说,就是他对应的包装类,比如要讲一个json数据转换成int类型的数据,gson.fromJson(jsonage,Integer.class);后面传入的就应该是Integer.class类。
       2.2对象转换
          新建一个Student类,代码如下:
	public class Student {
  		 private String name;
 		  private int age;
 		  private boolean sex;		
		public String getName() {
			return name;
		}
		public void setName(String name) {
			this.name = name;
		}
		public int getAge() {
			return age;
		}
		public void setAge(int age) {
			this.age = age;
		}
		public boolean isSex() {
			return sex;
		}
		public void setSex(boolean sex) {
			this.sex = sex;
		}
 		  @Override
		public String toString() {
			return "Student [name=" + name + ", age=" + age + ", sex=" + sex + "]";
		}
   
	}
	在activity中
	 Student stu =new Student();
	stu.setName("南叔");
	stu.setAge(19);
	stu.setSex(true);
	Gson gson = new Gson();
	String jsonobject =gson.toJson(stu);
	Log.i(TAG,jsonobject);//{"age":19,"name":"南叔","sex":true}
打印信息在右边,就没有再贴图了,jsonobject就是json类型的数据,他表示的是一个对象,用GSON转化为String,同单个字符串一样,Student stu2 =gson.fromJson(jsonobject,Student.class);Log.i(TAG,"Gson解析对象stu2:"+stu.getName()+",age="+stu.getAge()+",sex="+stu.getSex());//Gson解析对象stu2:南叔,age=19,sex=true打印信息如上
       2.JSONObject的使用
     1.将json字符串转换为基本数据类型           
	Student stu =new Student();
	stu.setName("南叔");
	stu.setAge(19);
	stu.setSex(true);
	Gson gson = new Gson();
	String jsonobject =gson.toJson(stu);
	JSONObject jsonObject = null;
	try {
 	   jsonObject = new JSONObject(jsonobject);
 	   String name =jsonObject.getString("name");
 	   int age=Integer.parseInt(jsonObject.getString("age"));
 	   boolean sex =Boolean.parseBoolean(jsonObject.getString("sex"));
 	   Log.i(TAG,"name: "+name+",age: "+age+",sex: "+sex);//name: 南叔,age: 19,sex: true
	} catch (JSONException e) {
  	  e.printStackTrace();
	}
        2.将基本数据转换为JSON数据
        	public JSONObject getJson(String tojson){
		JSONObject   jsonObject = new JSONObject();
		try {
			jsonObject.put(tojson, tojson);
		} catch (JSONException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return jsonObject;
	}
     方法很简单,只是封装了一层,使用的时候直接new一个就可以了,再传递给JS那边.JSONObject a =  getJson("nanyin");,需要注意的是,JSONObject是以键值对保存的,你取的时候要按照他对应的名称去取值。
     那么,这篇就结束了,233333
     源码下载
     github
     
          
      



    

	

                                      

    

            

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值