胡胜同学

做一个有本事的男人!

Android_Gson/JSON详解

Android_Gson/JSON详解

①JSON简介

1、JSON:JavaScript Object Notation。
2、JSON数据是一系列键值对的集合。
3、应用广泛。
4、相对XML更加方便。

②JSON vs XML

1、JSON 和XML的数据可读性基本相同。
2、JSON和XML同样拥有丰富的解析手段。
3、JSON相对XML来讲,数据体积小。
4、JSON与JavaScript的交互更加方便。
5、JSON对数据的描述相对较差。

③JSON解析的简单使用

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
	private String jsonData = "[{\"name\":\"Michael\",\"age\":20},{\"name\":\"Mike\",\"age\":21}]";
	private Button button ;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        button = (Button)findViewById(R.id.buttonId);
        button.setOnClickListener(new ButtonListener());
    }
    
    private class ButtonListener implements OnClickListener {

		@Override
		public void onClick(View v) {
			JsonUtils jsonUtils = new JsonUtils();
			jsonUtils.parseJson(jsonData);
		}
    	
    }
}

public class JsonUtils {
	public void parseJson(String jsonData){
		try{
			//如果需要解析JSON数据,首要要生成一个JsonReader对象
			JsonReader reader = new JsonReader(new StringReader(jsonData));
			reader.beginArray();
			while(reader.hasNext()){
				reader.beginObject();
				while(reader.hasNext()){
					String tagName = reader.nextName();
					if(tagName.equals("name")){
						System.out.println("name--->" + reader.nextString());
					}
					else if(tagName.equals("age")){
						System.out.println("age--->" + reader.nextInt());
					}
				}
				reader.endObject();
			}
			reader.endArray();
		}
		catch(Exception e){
			e.printStackTrace();
		}
	}
}

解析结果:


④使用Gson将JSON解析成对象

public class MainActivity extends Activity {
	private Button button = null;
	private String jsonData = "{\"name\":\"Michael\",\"age\":20}";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        button = (Button)findViewById(R.id.buttonId);
        button.setOnClickListener(new ButtonListener());
    }
    
    private class ButtonListener implements OnClickListener{

		@Override
		public void onClick(View v) {
			JsonUtils jsonUtils = new JsonUtils();
			jsonUtils.parseUserFromJson(jsonData);
		}
    	
    }
    
}

public class JsonUtils {
	
	public void parseUserFromJson(String jsonData){
		Gson gson = new Gson();
		User user = gson.fromJson(jsonData, User.class);
		System.out.println("name--->" + user.getName());
		System.out.println("age---->" + user.getAge());
		
	}
}

public class User {
	private String name ;
	private int age ;
	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;
	}
}

解析结果:

⑤将JSON解析成对象使用Iterator遍历

public class MainActivity extends Activity {
	private Button button = null;
	private String jsonData = "[{\"name\":\"Michael\",\"age\":20},{\"name\":\"Mike\",\"age\":21}]";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        button = (Button)findViewById(R.id.buttonId);
        button.setOnClickListener(new ButtonListener());
    }
    
    private class ButtonListener implements OnClickListener{

		@Override
		public void onClick(View v) {
			JsonUtils jsonUtils = new JsonUtils();
			jsonUtils.parseUserFromJson(jsonData);
		}
    	
    }
    
}

public class JsonUtils {
	
	public void parseUserFromJson(String jsonData){
		Type listType = new TypeToken<LinkedList<User>>(){}.getType();
		Gson gson = new Gson();
		LinkedList<User> users = gson.fromJson(jsonData, listType);
		for (Iterator iterator = users.iterator(); iterator.hasNext();) {
			User user = (User) iterator.next();
			System.out.println("name--->" + user.getName());
			System.out.println("age---->" + user.getAge());
		}
		
	}
}

public class User {
	private String name ;
	private int age ;
	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;
	}
}

解析结果:





阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/husheng0/article/details/46811523
个人分类: Android
想对作者说点什么? 我来说一句

AJAX_11JSON详解

2011年10月12日 48.03MB 下载

技术文章-JSON详解

2009年03月03日 112KB 下载

android_Gson

2017年06月20日 1.13MB 下载

JSON详解以及在android中的使用

2015年09月22日 1.73MB 下载

基于jQuery的AJAX和JSON的实例.zip

2012年05月31日 428KB 下载

JSON数据构造及解析详解

2015年07月05日 4.74MB 下载

JSON深度详解及org.json库详细剖析

2012年02月02日 20.76MB 下载

JSON教程详解.pdf

2009年09月07日 244KB 下载

Ajax json

2014年07月21日 1.72MB 下载

没有更多推荐了,返回首页

不良信息举报

Android_Gson/JSON详解

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭