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 }
  • 相关阅读:
    【Java】Java中的集合框架、泛型
    【Java】Java中日期获取、数值精度、异常处理
    【Java】包装类、及字符序列CharSequence接口
    【微服务】Docker环境安装及卸载教程-持续更新中
    【Java】Stream流式编程实战
    【Java】Lambda表达式详解及实战
    【Java】Java中I/O流使用及详解
    加入博客园的第八个月
    Structs复习 Structs标签
    Structs复习 OGNL
  • 原文地址:https://www.cnblogs.com/xuanyuanzhuo-blog/p/3983528.html
Copyright © 2011-2022 走看看