最近在做一個基于JAVA Servlet的WEB應用以及對應的Anroid應用客戶端的開發工作。
其中,在接口的訪問和數據的傳輸方面使用的比較多的是使用JSON對象來操作格式化數據:在服務器端采用JSON字符串來傳遞數據并在WEB前端或者Android客戶端使用JSON來解析接收到的數據。
首先,在JAVA中使用JSON需要引入 org.json 包, 并在程序中引入相應的JSON類:
import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;
其次,在服務器端的Servlet類中,可以使用如下方法收集數據并生成相應的JSON字符串
//聲明一個Hash對象并添加數據Map params = new HashMap();params.put("username", username);params.put("user_json", user);//聲明JSONArray對象并輸入JSON字符串JSONArray array = JSONArray.fromObject(params);put.println(array.toString());在WEB前端可以通過javascript直接對JSON字符串進行解析,在Android客戶端的話,需要使用JSON類來解析字符串:
//@description: 根據接收到的JSON字符串來解析字符串中所包含的數據和數據對象//接收到的JSON字符串String result = "[{/"username/": /"your name/", /"user_json/": {/"username/": /"your name/", /"nickname/": /"your nickname/"}}]";//根據字符串生成JSON對象JSONArray resultArray = new JSONArray(result);JSONObject resultObj = resultArray.optJSONObject(0);//獲取數據項String username = resultObj.getString("username");//獲取數據對象JSONObject user = resultObj.getJSONObject("user_json");String nickname = user.getString("nickname");其實,主要就是涉及到以下集中數據類型之間的轉換:
1. String 轉換為JSON對象
import org.json.JSONArray;import org.json.JSONException;import org.json.JSONObject;//別忘了添加上JSON包哦!public class StringToJSON { public static void main(String[] args) throws JSONException{ System.out.println("abc"); //定義JSON字符串 String jsonStr = "{/"id/": 2," + " /"title/": /"json title/", " + "/"config/": {" + "/"width/": 34," + "/"height/": 35," + "}, /"data/": [" + "/"JAVA/", /"JavaScript/", /"PHP/"" + "]}"; //轉換成為JSONObject對象 JSONObject jsonObj = new JSONObject(jsonStr); //從JSONObject對象中獲取數據 JavaBean bean = new JavaBean(); //根據屬性名稱獲取int型數據; bean.setId(jsonObj.getInt("id")); //根據屬性名獲取String數據; bean.setTitle(jsonObj.getString("title")); //根據屬性名獲取JSONObject類 JSONObject config = jsonObj.getJSONObject("config"); bean.setWidth(config.getInt("width")); bean.setHeight(config.getInt("height")); //根據屬性名獲取JSONArray數組 JSONArray data = jsonObj.getJSONArray("data"); for(int index = 0, length = data.length(); index < length; index++) { //這里在org.json.JSONArray對象中居然沒有找到toArray方法,求各位網友給出解決辦法啊!// bean.setLanguages(String[]); } }}class JavaBean{ private int id ; private String title; private int width; private int height; private String[] languages; //這里省略了設置器和訪問器}2. JSON對象轉換為String字符串
public static void main(String[] args) throws JSONException { //創建JSONObject對象 JSONObject json = new JSONObject(); //向json中添加數據 json.put("username", "wanglihong"); json.put("height", 12.5); json.put("age", 24); //創建JSONArray數組,并將json添加到數組 JSONArray array = new JSONArray(); array.put(json); //轉換為字符串 String jsonStr = array.toString(); System.out.println(jsonStr); }最終輸出結果為: [{"username":"wanglihong","height":12.5,"age":24}]
3. 集合轉換為JSONArray對象
public static void main(String[] args)throws JSONException{ //初始化ArrayList集合并添加數據 List<String> list = new ArrayList<String>(); list.add("username"); list.add("age"); list.add("sex"); //初始化HashMap集合并添加數組 Map map = new HashMap(); map.put("bookname", "CSS3實戰"); map.put("price", 69.0); //初始化JSONArray對象,并添加數據 JSONArray array = new JSONArray(); array.put(list); array.put(map); //生成的JSON字符串為:[["username","age","sex"],{"price":69,"bookname":"CSS3實戰"}] }以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。
新聞熱點
疑難解答