zoukankan      html  css  js  c++  java
  • Android学习笔记 json数据的解析

    习安卓一段时间了。突然觉得前面所学的大多没什么用,现在开始重新整理一遍。现在主要学习和网络相关的安卓知识了。毕竟现在的安卓应用,大多都跟做网络客户端有关的。
    这是学习笔记整理的第一篇,记录下Json数据解析,用的gson包。
    json就是键值对的集合。
    Android一般运用到json解析的地方都是应用通过http向服务器请求信息后,服务器返回json数据,Android将其中的每个json对象解析成相应的Bean对象,如下面的json数据:

    [{"name":"zhangsan","age":20},["name":"lisi","age":19]]

    此为一个json数组,里面包含两个人的对象。
    我们解析便是把两个对象提取出来:

    1、在android工程里生成一个Person类,person类的成员有name和age,对于json数据里面的对象。

    2、写一个json解析的类,直接返回一个List对象,包含解析好的两个person对象,类的构建如下:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    package com.example.jsontest2;
    
    import java.io.IOException;
    import java.io.StringReader;
    import java.util.ArrayList;
    import java.util.List;
    
    import com.google.gson.stream.JsonReader;
    
    public class JsonUtils {
        private List<Person> persons = null;
        private Person person = null;
    
        public List<Person> getPersons(String jsonData){
            try {
                JsonReader reader = new JsonReader(new StringReader(jsonData));
                reader.beginArray();
                persons = new ArrayList<Person>();
                while (reader.hasNext()) {
                    reader.beginObject();
                    person = new Person();
                    while(reader.hasNext()){
                    String tagName = reader.nextName();
                    if (tagName.equals("name")) {
                        person.setName(reader.nextString());
                    }else if(tagName.equals("age")){
                        person.setAge(reader.nextInt());
                    }
                }
                    reader.endObject();
                    persons.add(person);
                }
                reader.endArray();      
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return persons;
        }
    }
    

    在需要时调用JsonUtils的getPersons方法即可。这当然是比较简单的一种json数据解析。。

  • 相关阅读:
    C/C++之指针
    mysql--sql语言之DDL,DML
    mysql--之在Windows上的安装
    mysql--之mysql在linux上的安装
    动态资源和静态资源
    Tomcat文件夹和server配置文件解析
    和 的区别
    个数可变形参
    Java方法里参数的传递机制
    8中基本数据类型
  • 原文地址:https://www.cnblogs.com/fx2008/p/3138132.html
Copyright © 2011-2022 走看看