java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言, 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台 (即 JavaEE(j2ee), JavaME(j2me), JavaSE(j2se)) 的总称
本篇文章主要介绍了 JAVA 中使用 JSON 进行数据传递示例, 小编觉得挺不错的, 现在分享给大家, 也给大家做个参考一起跟随小编过来看看吧
最近在做一个基于 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 实战"}]
- }
来源: http://www.phperz.com/article/18/0222/358781.html