Android之解析Json数据

 


JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。

在Android中被广泛运用于客户端和网络(或者说服务器)通信。

JSON 表示名称 / 值对的方式

  按照最简单的形式,可以用下面这样的 JSON 表示"名称 / 值对":

            { "name": "Brett", "lage":22,"sex": "女" } ,这表示了一个JsonObject。

            [{name:"张三:",age:21,sex:"女"},{name:"李斯",age:21,sex:"女"},{name:"王五",age:21,sex:"女"}],使用中括弧表示JsonArray,是json对象数组。

       一、解析第一种单个json对象的json数据。数据从网络上获取。演示实例为 查询手机号码归属地。

      

URL url;
		StringBuffer sb = new StringBuffer();
		String line = null;
		try {
			url = new URL(
			"http://api.showji.com/Locating/default.aspx?m=13763089126&output=json&callback=querycallback");
			HttpURLConnection conn = (HttpURLConnection) url.openConnection();
			InputStream is = conn.getInputStream();
			BufferedReader buffer = new BufferedReader(
					new InputStreamReader(is));
			while ((line = buffer.readLine()) != null) {
				sb.append(line);
			}

		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

此处获取的数据为:

querycallback({"Mobile":"13763******","QueryResult":"True","Province":"广东","City":"湛江","AreaCode":"0759","PostCode":"524000","Corp":"中国移动","Card":"GSM"});

需要截取这个json对象出来。

String js = sb.substring(sb.indexOf("{"), sb.indexOf("}") + 1);

 

下面函数解析json对象,返回一个Callerloc对象

Callerloc是一个实体类

private Callerloc parse(String json) {
		Callerloc my = null;

		if (json == null || json.length() < 1)
			return null;
		try {
			my = new Callerloc();
			JSONObject jsonobj = new JSONObject(json);
			my.setMobile(jsonobj.getString("Mobile"));
			my.setQueryResult(jsonobj.getString("QueryResult"));
			my.setProvince(jsonobj.getString("Province"));
			my.setCity(jsonobj.getString("City"));
			my.setAreaCode(jsonobj.getString("AreaCode"));
			my.setPostCode(jsonobj.getString("PostCode"));
			my.setCard(jsonobj.getString("Card"));
			my.setCorp(jsonobj.getString("Corp"));
			
		} catch (JSONException e) {
			e.printStackTrace();
		}
		return my;
	}

       二、解析json数组

            json数据为:[{name:"张三:",age:21,sex:"女"},{name:"李斯",age:21,sex:"女"},{name:"王五",age:21,sex:"女"}]

           返回list

private ArrayList<myjson> parsem(String json) {
		myjson my = null;

		if (json == null || json.length() < 1)
			return null;
		try {
			JSONArray jsonary = new JSONArray(json);
			ArrayList<myjson> objlist = new ArrayList<myjson>();
			for (int i = 0; i < jsonary.length(); i++) {
				my = new myjson();
				JSONObject jsonobj = jsonary.getJSONObject(i);
				my.set_name(jsonobj.getString("name"));
				my.set_age(jsonobj.getInt("age"));
				my.set_sex(jsonobj.getString("sex"));
				objlist.add(my);
			}
			return objlist;
		} catch (JSONException e) {
			e.printStackTrace();
		}
		return null;
	}


 

      

      

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值