Android开发-JSON

1.概述

1.1 定义

      JSON是一种轻量级数据交换格式,全称为Javascript Object Notation,采用完全独立于编程语言的文本格式来储存和表示数据。采用键值对key-value形式。

1.2 数据结构

数据结构

Obeject:对象形式

使用{}包含的键值对结构,

key必须为String类型

value可以是任意类型数据结构或数据类型

Array:数组形式使用中括号[]表示数据类型是数组,其里面的元素以逗号“,”分隔开
数据类型

String

number

boolean

null

 

1.3 优点

1.简洁和清晰的层次结构
2.易于阅读和编写,易于机器解析和生成
3.有效的提升网络传输效率

 

 

2.Android的JSON解析方式

2.1 概述

     JSON解析方式有很多,如下所示:

1.JsonObject和JsonArrayAndroid SDK自带的,对于构造解析复杂的JSON困难
2.GsonGoogle提供,对象化,流行度比较高
3.FastJson阿里巴巴提供,速度快
4.LoganSquare快速解析和序列化
5.Jackson 
............

2.2 使用JSONObject

      JSON数据如下:http://www.imooc.com/api/teacher?type=2&page=1

{
status: 1,
data: [
    {
        id: 1,
        name: "Tony老师聊shell——环境变量配置文件",
        picSmall: "http://img.mukewang.com/55237dcc0001128c06000338-300-170.jpg",
        picBig: "http://img.mukewang.com/55237dcc0001128c06000338.jpg",
        description: "为你带来shell中的环境变量配置文件",
        learner: 12312
    },
    {
        id: 2,
        name: "数学知识在CSS动画中的应用",
        picSmall: "http://img.mukewang.com/55249cf30001ae8a06000338-300-170.jpg",
        picBig: "http://img.mukewang.com/55249cf30001ae8a06000338.jpg",
        description: "数学知识与CSS结合实现酷炫效果",
        learner: 45625
    },
    {
        id: 3,
        name: "Oracle数据库开发必备利器之PL/SQL基础",
        picSmall: "http://img.mukewang.com/5523711700016d1606000338-300-170.jpg",
        picBig: "http://img.mukewang.com/5523711700016d1606000338.jpg",
        description: "Oracle数据库高级开发必备的基础。",
        learner: 41236
    },
      ],
msg: "成功"
}

  步骤1:定义对应的实体类

//data里面的课程Lesson实体类
public class Lesson {
    //课程ID
    private int id;
    private int learnerNumber;
    //课程名称
    private String name;
    private String smallPictureUrl;
    private String bigPictureUrl;
    //课程描述
    private String description;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public int getLearnerNumber() {
        return learnerNumber;
    }
    public void setLearnerNumber(int learnerNumber) {
        this.learnerNumber = learnerNumber;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSmallPictureUrl() {
        return smallPictureUrl;
    }
    public void setSmallPictureUrl(String smallPictureUrl) {
        this.smallPictureUrl = smallPictureUrl;
    }
    public String getBigPictureUrl() {
        return bigPictureUrl;
    }
    public void setBigPictureUrl(String bigPictureUrl) {
        this.bigPictureUrl = bigPictureUrl;
    }
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description;
    }
    @Override
    public String toString() {
        return "Lesson{" +
                "id=" + id +
                ", learnerNumber=" + learnerNumber +
                ", name='" + name + '\'' +
                ", smallPictureUrl='" + smallPictureUrl + '\'' +
                ", bigPictureUrl='" + bigPictureUrl + '\'' +
                ", description='" + description + '\'' +
                '}';
    }
}

  

//JSON数据实体类
public class LessonResult {
    //请求状态
    private int status;
    //data的课程Lesson集合
    List<Lesson> lessonsList;

    public int getStatus() {
        return status;
    }
    public void setStatus(int status) {
        this.status = status;
    }
    public List<Lesson> getLessons() {
        return lessonsList;
    }
    public void setLessons(List<Lesson> lessonsList) {
        this.lessonsList = lessonsList;
    }
    @Override
    public String toString() {
        return "LessonResult{" +
                "status=" + status +
                ", lessonsList=" + lessonsList +
                '}';
    }
}

    步骤二:解析JSON数据

//处理解析Json数据,将获取到的字符串内容转换为Lesson和LessonResult对象信息
private void handleJSONData(String result) {
    try {
        LessonResult lessonResult = new LessonResult();
        List<Lesson> lessonList = new ArrayList<Lesson>();
        JSONObject jsonObject = new JSONObject(result);
        int status = jsonObject.getInt("status");
        lessonResult.setStatus(status);
        //得到Json数组
        JSONArray jsonArray = jsonObject.getJSONArray("data");
        if(jsonArray != null && jsonArray.length() != 0){
            //遍历数组
            for (int i = 0;i<jsonArray.length();i++){
                JSONObject lessonObject = (JSONObject) jsonArray.get(i);
                int id = lessonObject.getInt("id");
                int learner = lessonObject.getInt("learner");
                String name = lessonObject.getString("name");
                String smallPicture = lessonObject.getString("picSmall");
                String bigPicture = lessonObject.getString("picBig");
                String description = lessonObject.getString("description");
                Lesson lesson = new Lesson();
                lesson.setId(id);
                lesson.setName(name);
                lesson.setSmallPictureUrl(smallPicture);
                lesson.setBigPictureUrl(bigPicture);
                lesson.setDescription(description);
                lessonList.add(lesson);
            }
            lessonResult.setLessons(lessonList);
       }     
    } catch (JSONException e) {
          e.printStackTrace();
    }
}

2.3 使用Gson

  

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luckyliuqs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值