最近在做一个基于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实战"}] }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VeVb武林网。
新闻热点
疑难解答
图片精选