zoukankan      html  css  js  c++  java
  • JSON 的使用方法

    JSON--JavaScript Object Notation,是一种轻量级的数据交互格式,本质是特定格式的字符串,相比xml更简洁,现在是客户端与服务器端交互的最常用选择,已经很少用xml了

    JSON格式:1.JSON对象{key1:value1,key2:value2,}   2.JSON数组[value1,value2]

    先考入jar包,其中json.jar是官方jar包,fastjson.jar是阿里巴巴开发的jar包,在解析JSON数据时,官方包不如阿里巴巴的使用方便,可以通过如下代码进行比较:

    package com.hanqi.test;
    
    public class User {
    
        private int userID;
        private String userName,password;
        public User(int userID, String userName, String password) {
            super();
            this.userID = userID;
            this.userName = userName;
            this.password = password;
        }
        public int getUserID() {
            return userID;
        }
        public void setUserID(int userID) {
            this.userID = userID;
        }
        public String getUserName() {
            return userName;
        }
        public void setUserName(String userName) {
            this.userName = userName;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        public User() {
            super();
        }
        @Override
        public String toString() {
            return "User [userID=" + userID + ", userName=" + userName + ", password=" + password + "]";
        }
    }
    package com.hanqi.test;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.json.JSONException;
    
    import com.alibaba.fastjson.JSONArray;
    import com.alibaba.fastjson.JSONObject;
    
    public class TestJSON {
    
        public static void main(String[] args) {
            //测试JSON解析 
            
            //1从对象(集合)到JSON字符串
            
            User u1 = new User(999,"tom","123456");
            
            //导入阿里巴巴   JSON对象  jar包
            String ju1=JSONObject.toJSONString(u1);
            System.out.println("ju1="+ju1);
            
            //集合
            List<User> lu = new ArrayList<User>();
            lu.add(new User(111,"User1","111"));
            lu.add(new User(222,"User2","111"));
            lu.add(new User(333,"User3","111"));
            lu.add(new User(444,"User4","111"));
    
            //导入阿里巴巴 JSON集合  jar包
            String jlu = JSONArray.toJSONString(lu);
            System.out.println("jlu="+jlu);
            
            //2从JSON字符串到集合(对象)
            //阿里巴巴JSON 可以直接将JSON字符串转为对象
            User u2 =JSONObject.parseObject(ju1,User.class);
            System.out.println("u2="+u2);
            
            
            try {
                //名字冲突使用全路径  官方jar包
                //官方jar包不能直接转为对象,只能获取对象的单个值
                org.json.JSONObject jo = new org.json.JSONObject(ju1);
                
                int userid = jo.getInt("userID");            //只能获取单个值
                System.out.println("userID="+userid);
                
                
            } catch (JSONException e) {
                // TODO 自动生成的 catch 块
                e.printStackTrace();
            }
            //字符串集合
            //使用阿里巴巴jar包可以直接得到对象的集合
            List<User> lu2 = JSONArray.parseArray(jlu,User.class);
            //遍历集合
            for(User u:lu2)
            {
                
                System.out.println(u);
            }
            
            try {
                //使用官方jar包 必须解析JSON数组
                org.json.JSONArray ja = new org.json.JSONArray(jlu);
                
                //使用官方jar包   解析JSON数组时一次只能获取其中的一个JSON对象
                org.json.JSONObject  u3=  ja.getJSONObject(0);
                
                System.out.println("u3="+u3);
            
            
            } catch (JSONException e) {
                // TODO 自动生成的 catch 块
                e.printStackTrace();
            }
            
        }
    
    }

  • 相关阅读:
    c++构造函数析构函数调用顺序
    c++隐藏实例
    c++子类和父类成员函数重名
    C++虚函数·
    c/c++字符数组和字符串大揭秘
    python 基础回顾 一
    python java scala 单例模式
    推荐一款好用并且免费的markdown软件 Typora
    java 的垃圾回收机制 【转】
    python的垃圾回收机制【转】
  • 原文地址:https://www.cnblogs.com/wangguoning/p/6158722.html
Copyright © 2011-2022 走看看