最近公司开发项目中有用到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.导入到自己项目,并且添加依赖:

                       ,

android解析json简书 android jsonobject_android解析json简书

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

 2.使用详解

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

                2.1转换字符串:

                   String name ="nanyin";
   Gson gson = new Gson();
 

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