zoukankan      html  css  js  c++  java
  • Android之json数据解析

    首先是介绍:

    一、什么是json数据

    1、json:javascript object Notation的简称
    2、json数据是一系列键值对的集合;
    3、json已经被大多数开发人员,在网络数据的传输当中应用非常广泛;
    4、json相对于xml来讲解析稍微方便一些

    5、它的基本数据格式是:

    {
    "name":"Michael",
    "andress":
    {
    "city":"Beijing",
    "Street":"Chaoyang Road",
    "prostcode":100024
    }
    }

    二、json数据跟xml的比较

    1、json和xml的数据可读性基本相同;
    2、json和xml同样拥有丰富的解析手段;
    3、json相对于xml来讲,数据体积小;
    4、json与javascrpit的交互更加方便;
    5、json对数据的描述性相对较差;

    三、android中的3种解析方式的代码如下:

    首先要把jar包拷到项目中:

    Android之json数据解析  Android之json数据解析   http://code.google.com/p/google-gson/ 

    第一种方式解析:private String jsonData1="[{\"name\":\"renhaili\",\"age\":20},{\"name\":\"zhouxiaodong\",\"age\":21}]";这种数据的解析方式:

    01 public void parseJson(String jsonData) {
    02         // 如果需要从解析json数据,首先要生成一个jsonReader对象
    03         JsonReader reader = new JsonReader(new StringReader(jsonData));
    04         try {
    05             // 现在开始解析
    06             reader.beginArray();// 开始解析数组
    07             while (reader.hasNext()) {
    08                 reader.beginObject();// 开始解析对象
    09                 while (reader.hasNext()) {
    10                     String tagName = reader.nextName();
    11                     if (tagName.equals("name")) {
    12                         System.out.println(reader.nextString());
    13                     } else if (tagName.equals("age")) {
    14                         System.out.println(reader.nextInt());
    15                     }
    16                 }
    17                 reader.endObject();// 结束对象解析
    18             }
    19             reader.endArray();// 结束数组解析
    20         } catch (IOException e) {
    21             e.printStackTrace();
    22         }
    23     }

    第二种方式解析:private String jsonData2="{\"name\":\"xiong\",\"age\":18}";这种数据的解析方式:

    单个json对象转化为与之对应的user对象

    这种只能解析对象,不可以解析数组的

    首先要创建一个User类:

    01 public class User {
    02     private String name;
    03     private int age;
    04     public String getName() {
    05         return name;
    06     }
    07     public void setName(String name) {
    08         this.name = name;
    09     }
    10     public int getAge() {
    11         return age;
    12     }
    13     public void setAge(int age) {
    14         this.age = age;
    15     }
    16 }

    然后利用User类解析json数据:

    Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。

     

    Gson网址http://code.google.com/p/google-gson/

    1 public void pareUserFromJson(String jsonData){
    2         Gson gson=new Gson();//创建Gson对象,
    3         User user=gson.fromJson(jsonData,User.class);
    4         System.out.println(user.getName());
    5         System.out.println(user.getAge());
    6     }

    第三种解析:还是第一种的数据类型用第二种方式解析:

    json对象数组转化为与之对应的user对象

    如果想要JSON数组转换成多个的User对象,可以使用TypeToken:

    Type 是 Java 编程语言中所有类型的公共高级接口。它们包括原始类型、参数化类型、数组类型、类型变量和基本类型。

    01 public void parseJsonFromUser(String jsonData){
    02         //likedlist是双向列表
    03         Type listType=new TypeToken<LinkedList<User>>(){}.getType();
    04         Gson gson=new Gson();
    05         LinkedList<User> users=gson.fromJson(jsonData, listType);
    06         for(Iterator<User> iterator=users.iterator();iterator.hasNext();){
    07             User user=(User)iterator.next();
    08             System.out.println(user.getName());
    09             System.out.println(user.getAge());
    10         }
    11     }
  • 相关阅读:
    Java实现 蓝桥杯VIP 算法训练 数的统计
    Java实现 蓝桥杯VIP 算法训练 和为T
    Java实现 蓝桥杯VIP 算法训练 友好数
    Java实现 蓝桥杯VIP 算法训练 连续正整数的和
    Java实现 蓝桥杯VIP 算法训练 寂寞的数
    Java实现 蓝桥杯VIP 算法训练 学做菜
    Java实现 蓝桥杯VIP 算法训练 暗恋
    Java实现 蓝桥杯VIP 算法训练 暗恋
    测试鼠标是否在窗口内,以及测试鼠标是否在窗口停留
    RichEdit 各个版本介绍
  • 原文地址:https://www.cnblogs.com/qingblog/p/2544782.html
Copyright © 2011-2022 走看看