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数据。数据从网络上获取。演示实例为 查询手机号码归属地。

[java] view plain copy print ?
  1. URLurl;
  2. StringBuffersb=newStringBuffer();
  3. Stringline=null;
  4. try{
  5. url=newURL(
  6. "http://api.showji.com/Locating/default.aspx?m=13763089126&output=json&callback=querycallback");
  7. HttpURLConnectionconn=(HttpURLConnection)url.openConnection();
  8. InputStreamis=conn.getInputStream();
  9. BufferedReaderbuffer=newBufferedReader(
  10. newInputStreamReader(is));
  11. while((line=buffer.readLine())!=null){
  12. sb.append(line);
  13. }
  14. }catch(MalformedURLExceptione){
  15. e.printStackTrace();
  16. }catch(IOExceptione){
  17. e.printStackTrace();
  18. }

此处获取的数据为:

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是一个实体类

[html] view plain copy print ?
  1. privateCallerlocparse(Stringjson){
  2. Callerlocmy=null;
  3. if(json==null||json.length()<1)
  4. returnnull;
  5. try{
  6. my=newCallerloc();
  7. JSONObjectjsonobj=newJSONObject(json);
[html] view plain copy print ?
  1. my.setMobile(jsonobj.getString("Mobile"));
  2. my.setQueryResult(jsonobj.getString("QueryResult"));
  3. my.setProvince(jsonobj.getString("Province"));
  4. my.setCity(jsonobj.getString("City"));
  5. my.setAreaCode(jsonobj.getString("AreaCode"));
  6. my.setPostCode(jsonobj.getString("PostCode"));
  7. my.setCard(jsonobj.getString("Card"));
  8. my.setCorp(jsonobj.getString("Corp"));
[html] view plain copy print ?
  1. }catch(JSONExceptione){
  2. e.printStackTrace();
  3. }
  4. returnmy;
  5. }

二、解析json数组

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

返回list

[java] view plain copy print ?
  1. privateArrayList<myjson>parsem(Stringjson){
  2. myjsonmy=null;
  3. if(json==null||json.length()<1)
  4. returnnull;
  5. try{
  6. JSONArrayjsonary=newJSONArray(json);
  7. ArrayList<myjson>objlist=newArrayList<myjson>();
  8. for(inti=0;i<jsonary.length();i++){
  9. my=newmyjson();
  10. JSONObjectjsonobj=jsonary.getJSONObject(i);
  11. my.set_name(jsonobj.getString("name"));
  12. my.set_age(jsonobj.getInt("age"));
  13. my.set_sex(jsonobj.getString("sex"));
  14. objlist.add(my);
  15. }
  16. returnobjlist;
  17. }catch(JSONExceptione){
  18. e.printStackTrace();
  19. }
  20. returnnull;
  21. }

更多相关文章

  1. android保存文件到sd卡,读取和清空记录功能(可以用来保存用户名和
  2. Android(安卓)如何解析Xml字符串
  3. Android(安卓)Architecture Components 部分源码代码分析
  4. android中handler 轮询数据变化 使用WeakReference防止内存泄露
  5. Android(安卓)布局转化为View对象的两种方法
  6. Android的数据存储之SharedPreferences1
  7. ContentProvider 详解
  8. Android(安卓)ApiDemos示例解析(73):Graphics->Points
  9. android 里面的 Drawable 和 ConstantState

随机推荐

  1. Android小项目之欢迎滑动页面(最简洁方法
  2. Android studio Android Monitor介绍二
  3. Android 代码里设置ImageView的src和back
  4. android绕过设备锁(device lock)
  5. Android(安卓)异步加载图像优化,如:引入线
  6. Android 监听网络变化然后刷新页面
  7. C# 实现 类似Android的Toast
  8. [置顶] Android动态添加控件约束位置
  9. Android 开发 全局捕获异常
  10. 判断Android手机是否联网