Android中解析JSON

1.什么是JSON

  a.JSON:JavaScript Object Notation;

  b.JSON数据是一系列键值对的集合

  c.JSON已经被大多数开发人员接受,在网络数据的传输中应用非常广泛

  d.JSON相对于XML来讲解析稍微方便一些;

  e:JSON  VS XML

     (1).JSON和XML的数据可读性基本相同

     (2).JSON和XML同样拥有丰富的解析手段;

     (3)JSON相对于XML来讲,数据体积小;

     (4)JSON与JavaScript的交互更加方便

     (5).JSON对数据的描述性相对较差

2.JSON的数据格式的特点

 一个JSON的例子

{
  "name":"zhangsan",
  "address":
 {
   "city":"shengzhen",
   "street":"qinghu"
 }
}

3.使用Gson解析JSON

  1.添加包,下载地址:

  http://code.google.com/p/google-gson/

  2.新建一个JsonUtils.java的类

package wei.cao;


import java.io.StringReader;
import java.lang.reflect.Type;
import java.util.Iterator;
import java.util.LinkedList;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader;


public class JsonUtils {
	
	public void parserUserFromJson(String jsonData)
	{
		/*[{"name":"wei_cao","age":20},{"name":"zhang_san","age":22}]
		 * 1.开始解析数组
		 * 2.开始解析对象
		 * 3.解析键值对
		 * 4.解析键值对
		 * 5.解析对象结束
		 * 6.开始解析对象
		 * 7.解析键值对
		 * 8.解析键值对
		 * 9,解析对象结束
		 * 10.解析数组结束
		 * */
		//如果需要解析JSON数据,首先要生成一个JsonReader对象
		JsonReader reader=new JsonReader(new StringReader(jsonData));
		try {
			reader.beginArray();
			while(reader.hasNext())
			{
				reader.beginObject();
				while(reader.hasNext())
				{
					String tagName=reader.nextName();
					if(tagName.equals("name"))
					{
						System.out.println("age--->"+reader.nextString());
					}
					else if(tagName.equals("age"))
					{
						System.out.println("age--->"+reader.nextInt());
					}
				}
				reader.endObject();
				
			}
		   reader.endArray();
		} catch (Exception e) {
		
			e.printStackTrace();
		}
	}
	//解析单一Json对象
	public void parserUserFromJson1(String jsonData)
	{
		Gson gson=new Gson();
		User user=gson.fromJson(jsonData, User.class);
		System.out.print("name--->"+user.getName());
		System.out.print("name--->"+user.getAge());
	}
	//解析Json对象的数组
	public void parserUserFromJson2(String str)
	{
        Type listType=new TypeToken<LinkedList<User>>(){}.getType();
        Gson gson=new Gson();
        LinkedList<User> users=gson.fromJson(str, listType);
        for(Iterator<User> iterator=users.iterator();iterator.hasNext();){
        	User user=(User)iterator.next();
		System.out.print("name--->"+user.getName());
		System.out.print("name--->"+user.getAge());
		}
	}
}

3.Activity_JsonActivity.java的内容如下

package wei.cao;


import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class Activity_JsonActivity extends Activity {
    /** Called when the activity is first created. */
	private Button btnParseJson=null;
	//private String jsonData="{\"name\":\"wei_cao\",\"age\":20}";
	private String jsonData="[{\"name\":\"wei_cao\",\"age\":20},{\"name\":\"zhang_san\",\"age\":22}]";
  
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        btnParseJson=(Button)this.findViewById(R.id.btnParseJson);
        btnParseJson.setOnClickListener(new ButtonListener());
    }
    private class ButtonListener implements OnClickListener
    {
		@Override
		public void onClick(View arg0) {
			JsonUtils jsonUtils=new JsonUtils();
			jsonUtils.parserUserFromJson(jsonData);
		}
    	
    }
}


 


package wei.cao;


import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class Activity_JsonActivity extends Activity {
    /** Called when the activity is first created. */
 private Button btnParseJson=null;
 //private String jsonData="{\"name\":\"wei_cao\",\"age\":20}";
 private String jsonData="[{\"name\":\"wei_cao\",\"age\":20},{\"name\":\"zhang_san\",\"age\":22}]";
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        btnParseJson=(Button)this.findViewById(R.id.btnParseJson);
        btnParseJson.setOnClickListener(new ButtonListener());
    }
    private class ButtonListener implements OnClickListener
    {
  @Override
  public void onClick(View arg0) {
   JsonUtils jsonUtils=new JsonUtils();
   jsonUtils.parserUserFromJson(jsonData);
  }
     
    }
}

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值