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();
        }
        
    }

}

 

posted @ 2016-12-10 23:35  wangguoning  阅读(28078)  评论(1编辑  收藏  举报