zoukankan      html  css  js  c++  java
  • Json数据解析

    1 Java代码:
    "[{"name":"kevin","age":25},{"name":"cissy","age":24}]";

    这是一个json数组。解析的流程: 
      1. 碰到"[",开始解析Json数组。 
      2. 碰到"{",开始解析Json对象。 
      3. 解析Json对象里面的值。 
      4. 碰到"}",解析Json对象结束。 
      5. 碰到"]",解析Json数组结束。 
      另外Gson可以直接解析Json数组或者对象到你自定义的一个对象,这里我就多作解释了。代码里注释写的很清楚。 
      代码如下: 

     1 package com.kevin.json;
     2 
     3 import java.io.IOException;
     4 import java.io.StringReader;
     5 import java.lang.reflect.Type;
     6 import java.util.Iterator;
     7 import java.util.LinkedList;
     8 
     9 import com.google.gson.Gson;
    10 import com.google.gson.reflect.TypeToken;
    11 import com.google.gson.stream.JsonReader;
    12 
    13 public class JsonUtils {
    14     public void parseJson(String jsonData){
    15         // 解析JSON数据,首先要创建一个JsonReader对象
    16         JsonReader reader = new JsonReader(new StringReader(jsonData));
    17         try {
    18             // 开始解析JSON数组
    19             reader.beginArray();
    20             // 循环读取JSON中的数组
    21             while(reader.hasNext()){
    22                 // 开始解析JSON数组里的对象
    23                 reader.beginObject();
    24                 // 循环读取JSON数组中的对象
    25                 while(reader.hasNext()){
    26                     String tagName = reader.nextName();
    27                     if(tagName.equals("name")){
    28                         System.out.println("name---->" + reader.nextString());
    29                     }
    30                     else if(tagName.equals("age")){
    31                         System.out.println("age---->" + reader.nextInt());
    32                     }
    33                 }
    34                 reader.endObject();
    35             }
    36             reader.endArray();
    37         } catch (IOException e) {
    38             e.printStackTrace();
    39         }    
    40     }
    41     public void parseUserFromJson(String jsonData){
    42         // 解析json对象并赋值给User对象
    43         Gson gson = new Gson();
    44         User user = gson.fromJson(jsonData, User.class);
    45         System.out.println("name---->" + user.getName());
    46         System.out.println("age---->" + user.getAge());
    47     }
    48     // 解析JSON数组并赋值给User对象
    49     public void parseUserArrayFromJson(String jsonData){
    50         // 取得该类型的实体
    51         Type listType = new TypeToken<LinkedList<User>>(){}.getType();
    52         Gson gson = new Gson();
    53         LinkedList<User> users = gson.fromJson(jsonData, listType);
    54         for(Iterator<User> iterator = users.iterator(); iterator.hasNext();){
    55             User user = (User)iterator.next();
    56             System.out.println("name---->" + user.getName());
    57             System.out.println("age---->" + user.getAge());
    58         }
    59     }
    60 }
  • 相关阅读:
    个人收集
    30个提高Web程序执行效率的好经验
    如何进行有效的代码检查
    软件测试杂谈
    论dotnet应用程序通用开发方法的弊端
    给Linux增加硬盘的方法
    知识分子的生活态度
    深入认识敏捷开发和面向对象
    使用自定义主题让Windows Live Writer在本地预览语法高亮效果
    软件工程项目中数据库的作用以及敏捷开发
  • 原文地址:https://www.cnblogs.com/xuanyuanzhuo-blog/p/3983528.html
Copyright © 2011-2022 走看看