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


更多相关文章

  1. Notification中Intent携带数据重复问题
  2. android中的数据存储
  3. ThreadLocal原理解析(1):数据存取
  4. Android--用JSON解析数据
  5. Android中使用putExtra()传递对象实例
  6. Android 中的数据存储
  7. android 直接进行数据库操作

随机推荐

  1. 唬人的Redis多线程,也就那么回事
  2. 【DB笔试面试698】在Oracle中,如何查看某
  3. 【DB笔试面试703】在Oracle中,怎么杀掉特
  4. 程序员 做头发 奇遇记
  5. 【DB笔试面试716】在Oracle中,集群有哪几
  6. 【DB笔试面试697】在Oracle中,V$SESSION视
  7. 【DB笔试面试678】在Oracle中,什么是热块?
  8. Redis,就是这么朴实无华
  9. 【DB笔试面试628】Oracle的统计信息包括
  10. 【DB笔试面试821】在Oracle中,如何定时生