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