JSON的解析

Json是一种轻便的数据交换格式,客户端和服务器端用Json来交互数据,会比其他一些交换格式(比如说XML)更省流量.
Json可以用来传递String,Number,Boolean,数组以及对象等格式的数据
Json对象有两种表示方式,一种是JsonObject
{"name":"小探寻","年龄":"21"}
      另外一种是Json数组。
[{"name":"小探寻","年龄":"21"},{"name":"Huber","年龄":"20"}]
两种表示方式可以互相嵌套,例如:{"Girls":"[{"name":"小探寻","年龄":"21"},{"name":"Huber","年龄":"20"}]"}
关于Json解析,这里介绍两种方式
  1.org.json    这是Android的API自带的Json解析方式
  2.com.google.gson 这是Google自己封装的Json解析方式
多说无意义,还是先上代码吧.
public class MainActivity extends Activity {

	//在这里需要对字符进行转义
	private String JsonData = "[{\"name\":\"小探寻\",\"age\":\"21\"}";
	
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		try {
			//将JSON字符串转化成JSONObject对象
			JSONObject jsonObject = new JSONObject(JsonData);
			
			//获取JSONObject对象的属性值
			String name = jsonObject.getString("name");
			int age = jsonObject.getInt("age");
			System.out.println("姓名"+name+",年龄"+age);
		} catch (JSONException e) {
			e.printStackTrace();
		}
	}
}

打印结果:

数组形式的JSON解析

public class MainActivity extends Activity {

	//在这里需要对字符进行转义
	private String JsonData = "[{\"name\":\"小探寻\",\"age\":\"21\"},{\"name\":\"Huber\",\"age\":\"20\"}]";
	
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		try {
			//取得JSONArray
			JSONArray jsonArray = new JSONArray(JsonData);
			
			//获取JSONObject对象的属性值
			for(int i=0; i<jsonArray.length(); i++){
				JSONObject jsonObject = jsonArray.getJSONObject(i);
				String name = jsonObject.getString("name");
				int age = jsonObject.getInt("age");
				System.out.println("姓名"+name+",年龄"+age);
			}
			
		} catch (JSONException e) {
			e.printStackTrace();
		}
	
	}

	

}
打印结果:


第二种我们通过Gson来解析.需要Gson的jar包的支持。

public class MainActivity extends Activity {

	//在这里需要对字符进行转义
//	private String JsonData = "{\"girlName\":\"小探寻\",\"girlAge\":\"21\"}";
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
//			Gson gson = new Gson();
//			//JSON字符串转换成对象,这里注意JSON字符串的key和实体对象的成员变量名要一致,fromJson(参数1,参数2)参数1是要转换的JSON字符串,参数2是要转换的目标对象
//			Girl girl = gson.fromJson(JsonData, Girl.class);
//			String name = girl.getGirlName();
//			int age = girl.getGirlAge();
//			System.out.println("姓名"+name+",年龄"+age);
//		
		//对象转换成JSON字符串
		Girl girl = new Girl();
		girl.setGirlName("高圆圆");
		girl.setGirlAge(31);
		
		Gson gson = new Gson();
		//toJson的参数可以是一个对象,也可以是对歌对象的集合如List<Girl>
		String jsonString = gson.toJson(girl);
		System.out.println(".............."+jsonString);
		
		 String JsonData1 = "[{\"girlName\":\"小探寻\",\"girlAge\":\"21\"},{\"girlName\":\"高圆圆\",\"girlAge\":\"31\"}]";
		
		//TypeToken,它是gson提供的数据类型转换器,可以支持各种数据集合类型转换。
		 List<Girl> girls = gson.fromJson(JsonData1, new TypeToken<List<Girl>>(){}.getType());
		 for(Girl girl2: girls){
			 String name = girl2.getGirlName();
			 int age = girl2.getGirlAge();
			 System.out.println("姓名"+name+",年龄"+age);
		 }
	}
}
打印结果:



我今天学到的JSON的简单解析基本上就是这样了,还有更多的知识,你们可以自己去学习.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值