关闭

Android_Gson/JSON详解

312人阅读 评论(0) 收藏 举报
分类:

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;
	}
}

解析结果:





0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

JSON全面讲解

JSON全面讲解 一、Json简介     概念:JSON的全称是JavaScript Object Notation,是一种轻量级的数据交换格式。     优点:      (1)本质就是具...
  • Android_xue
  • Android_xue
  • 2017-04-06 23:48
  • 230

json格式详解

JSON格式:http://www.json.org/ python和JSON的关系请参考:http://docs.python.org/library/json.html   JSON建构有两种...
  • fngy123
  • fngy123
  • 2014-04-25 10:36
  • 984

JSON的各种解析小结

JSON的各种解析JSON是对象类型解析 数据是 {“name”:”zhangsanfeng”,”age”:3,”sex”:”nv”} protected User readJsonObject(St...
  • u011480946
  • u011480946
  • 2016-12-05 21:33
  • 2604

超详细JSON解析步骤

JSON简介 JAVAScript Object Notation是一种轻量级的数据交换格式具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得...
  • miaozhenzhong
  • miaozhenzhong
  • 2016-09-19 14:58
  • 20927

python对json的相关操作以及json模块的简要分析

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。 JSON有两种结构: 第一种就是“名称/值”对的...
  • krzover
  • krzover
  • 2017-03-18 11:33
  • 425

【第8篇】使用json-lib的解析和封装json例子使用

使用json-lib的解析和封装json例子使用
  • jilongliang
  • jilongliang
  • 2015-01-18 20:50
  • 1679

使用FastJson解析Json数据

使用Fastjson解析Json数据
  • G1Apassz
  • G1Apassz
  • 2015-03-19 14:14
  • 53950

Json 详细解读 解析

JSON的定义:        一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不...
  • wdx_1136346879
  • wdx_1136346879
  • 2016-04-20 16:13
  • 1155

网络编程之开源项目和JSON解析技术的使用——简易新闻客户端

此案例中使用了开源项目AsyncHttpClient和SmartImageView,以及JSON解析技术的使用。实现获取服务器的Json文件并将其解析出来捆绑显示到ListView上的功能。1、首先创...
  • ruanjian_kj
  • ruanjian_kj
  • 2017-05-24 18:38
  • 281

快速、高效解析Json数据之FastJson

快速、高效解析Json数据之FastJson 为什么使用FastJson? 解析速度快、解析方便、使用简单。
  • z19980115
  • z19980115
  • 2016-07-23 16:52
  • 3777
    个人资料
    • 访问:251561次
    • 积分:5002
    • 等级:
    • 排名:第6543名
    • 原创:240篇
    • 转载:65篇
    • 译文:2篇
    • 评论:64条
    博客专栏