• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > 7.2.2 Android JSON数据解析

7.2.2 Android JSON数据解析

作者:coder-pig 字体:[增加 减小] 来源:互联网 时间:2017-05-22

coder-pig通过本文主要向大家介绍了迅雷7.2.2官方下载,7.2.2用坐标表示平移,硬盘安装器7.2.2,迅雷7.2.2,notepad 7.2.2等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本节引言:

相信大家肯定对JSON不陌生吧,我们和服务器交互一般用得较多的数据传递方式都是Json字符串的形式, 保存对象,我们也可以写成一个Json字符串然后存储!解析Json不知道你用的是Gson,Fastjson,jackson 等,不过本节我们并不会去用这些第三方的解析库,而是使用Android自带的扣脚Json解析器来解析Json! 好的,开始本节内容!


1.Json概念以及与XML的比较

1)Json是什么?

答:JavaScript Object Natation, 一种轻量级的数据交换格式, 与XML一样, 广泛被采用的客户端和服务端交互的解决方案!具有良好的可读和便于快速编写的特性。

2)Json与XML的比较:

  • JSON和XML的数据可读性基本相同;
  • JSON和XML同样拥有丰富的解析手段
  • JSON相对于XML来讲,数据的体积小
  • JSON与JavaScript的交互更加方便
  • JSON对数据的描述性比XML较差
  • JSON的速度要远远快于XML

PS:上述来自于百度~简单点说Json的优点:体积小,节省流量,只是不如XML直观,可读性 稍微差一点而已!

3)Json的格式规范:

就像协议一样,肯定是有一套规范的,毕竟双方都是通过Json字符串来传递数据,语法规则如下: 数据在名称/值对中;数据由逗号分隔;花括号保存对象;方括号保存数组; 而Json数据的书写格式:名称/值对 比如: "person":"coder-pig" 比如一个简单的Json字符串:

[
    { "id":"1","name":"基神","age":"18" },
    { "id":"2","name":"B神","age":"18"  },
    { "id":"3","name":"曹神","age":"18" }
]

我们除了解析Json还可以自己拼接Json,当然如果你自己拼了一个Json字符串又不知道对不对, 可以百度随便找一个校验工具,比如: http://www.runoob.com/jsontool把Json字符串贴上去,校验下就好!


2.Android给我们提供的扣脚Json解析类

这些API都存在于org.json包下,而我们用到的类有下面这些:

  • JSONObject: Json对象,可以完成Json字符串与Java对象的相互转换
  • JSONArray: Json数组,可以完成Json字符串与Java集合或对象的相互转换
  • JSONStringer: Json文本构建类,这个类可以帮助快速和便捷的创建JSON text, 每个JSONStringer实体只能对应创建一个JSON text
  • JSONTokener:Json解析类
  • JSONException:Json异常

3.代码示例:解析Json字符串:

PS:这里我们就不另外写servlet或者请求网站,直接把Json写到字符串中来解析,模拟下就算了!

1)简单的Json字符串解析示例:

我们解析的是上面这个简单的Json,首先我们来写一个POJO类:

Person.java:

/**
 * Created by Jay on 2015/9/8 0008.
 */
public class Person {
    private String id;
    private String name;
    private String age;
    public void setId(String id){
        this.id = id;
    }
    public String getId(){
        return this.id;
    }
    public void setName(String name){
        this.name = name;
    }
    public String getName(){
        return this.name;
    }
    public void setAge(String age){
        this.age = age;
    }
    public String getAge(){
        return this.age;
    }
    @Override
    public String toString() {
        return this.name + "~年方:" + this.age;
    }
}

写一个解析上述Json字符串的方法:

private void parseEasyJson(String json){
    persons = new ArrayList<Person>();
    try{
        JSONArray jsonArray = new JSONArray(json);
        for(int i = 0;i < jsonArray.length();i++){
            JSONObject jsonObject = (JSONObject) jsonArray.get(i);
            Person person = new Person();
            person.setId(i+"");
            person.setName(jsonObject.getString("name"));
            person.setAge(jsonObject.getString("age"));
            persons.add(person);
        }
    }catch (Exception e){e.printStackTrace();}
}

运行效果图:

嘿嘿,很简单是吧,接下来我们找一个复杂点的!


2)复杂的Json字符串解析示例:

如果是这样的Json字符串呢?

呵呵,那就需要我们一步步来扣数据了:

解析代码如下:

private void parseDiffJson(String json) {
    try {
        JSONObject jsonObject1 = new JSONObject(json);
        Log.e("Json", json);
        JSONArray jsonArray = jsonObject1.getJSONArray("ch");
        for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject jsonObject = (JSONObject) jsonArray.get(i);
            //取出name
            String sname = jsonObject.getString("names");
            JSONArray jarray1 = jsonObject.getJSONArray("data");
            JSONArray jarray2 = jsonObject.getJSONArray("times");
            Log.e("Json", sname);
            Log.e("Json", jarray1.toString());
            Log.e("Json", jarray2.toString());
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

}

看下打印的Log:

当然还有一层,有兴趣你就自己扣...


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 7.2.2 Android JSON数据解析

相关文章

  • 2017-05-224.3.1 BroadcastReceiver牛刀小试
  • 2017-05-26Android Volley框架的使用(5),androidvolley
  • 2017-05-26Linux目录与文件权限的意义
  • 2017-05-26android的color整理(一),androidcolor整理
  • 2017-05-26android使用AIDL实现跨进程通讯(IPC)
  • 2017-05-26Android系统四层架构分享,android四层架构
  • 2017-05-26二层(链路层)数据包发送过程分析
  • 2017-05-26自定义数字加减控件,自定义数字控件
  • 2017-05-26xUtils3,xutils3github
  • 2017-05-26Linux内核系列—11.操作系统开发之ELF格式,linuxelf

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 插入排序算法详解,排序算法详解
    • 仿拉手团购App9-- 产品详情界面,团购app9--
    • Android 事件分发
    • 编译android源码6---运行android编译源码
    • Android Native crash日志分析,androidcrash
    • 银联支付,支付
    • 仿有道词典应用项目源码,有道词典项目源码
    • Android GreenDAO3.0——介绍,androidgreendao3.0
    • 二维码积分兑换商城,积分兑换商城
    • 硅谷新闻3--使用Android系统自带的API解析json数据,androidjson

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有