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 }
  • 相关阅读:
    leetcode链表--15、reverse-nodes-in-k-group(按照k值进行k个结点的逆序)
    4、消除重复元素--网易2017春招
    24、剑指offer--二叉树中和为某一值的路径
    leetcode链表--14、add-two-numbers(两链表相加 得到新链表)
    3、调整队形--网易2017春招
    2、赶去公司--网易2017春招
    1、双核处理--网易2017春招
    CSS3自定义滚动条样式 -webkit-scrollbar
    git安装使用
    div+css居中
  • 原文地址:https://www.cnblogs.com/xuanyuanzhuo-blog/p/3983528.html
Copyright © 2011-2022 走看看