JAVA中使用JSON进行数据传递
最近在做一个基于JAVA Servlet的WEB应用以及对应的Anroid应用客户端的开发工作。
其中,在接口的访问和数据的传输方面使用的比较多的是使用JSON对象来操作格式化数据:在服务器端采用JSON字符串来传递数据并在WEB前端或者Android客户端使用JSON来解析接收到的数据。
首先,在JAVA中使用JSON需要引入 org.json 包(点击 这里 可以下载相应的JAR包!), 并在程序中引入相应的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实战"}]
- }
JAVA中使用JSON进行数据传递的更多相关文章
- 转载:JAVA中使用JSON进行数据传递
转载网址:http://www.cnblogs.com/undead/archive/2012/07/18/2594900.html 最近在做一个基于JAVA Servlet的WEB应用以及对应的An ...
- JSON(三)——java中对于JSON格式数据的解析之json-lib与jackson
java中对于JSON格式数据的操作,主要是json格式字符串与JavaBean之间的相互转换.java中能够解析JSON格式数据的框架有很多,比如json-lib,jackson,阿里巴巴的fast ...
- fastJson在java后台转换json格式数据探究(二)--处理数组/List/Map
作者:buster2014 推荐:长安散人 fastJson在java后台转换json格式数据探究(二)--处理数组/List/Map JSON字符串与Java对象的转换 1.将Java对象或Java ...
- Java中哪个JSON库的解析速度是最快的?
JSON已经成为当前服务器与WEB应用之间数据传输的公认标准,不过正如许多我们所习以为常的事情一样,你会觉得这是理所当然的便不再深入思考 了.我们很少会去想用到的这些JSON库到底有什么不同,但事实上 ...
- SpringMVC中使用Json传数据
在web项目中使用Json进行数据的传输是非常常见且有用的,在这里介绍下在SpringMVC中使用Json传数据的一种方法,在我的使用中,主要包括下面四个部分(我个人喜好使用maven这类型工具进行项 ...
- fastJson java后台转换json格式数据
什么事JSON? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Progra ...
- 在JSP页面中输出JSON格式数据
JSON-taglib是一套使在JSP页面中输出JSON格式数据的标签库. JSON-taglib主页: http://json-taglib.sourceforge.net/index.html J ...
- Java中double类型的数据精确到小数点后两位
Java中double类型的数据精确到小数点后两位 多余位四舍五入,四种方法 一: double f = 111231.5585;BigDecimal b = new BigDecimal(f); d ...
- http中使用json封装数据的性能测试
http中使用json封装数据的性能测试 一个项目使用json封装数据,接口例如: 客户端发送: POST /list.do HTTP/1.1 Host: zoomi.com.cn ...
随机推荐
- SCU3033 Destroying a Painting(最小费用最大流)
题目大概说有一个有n*m个格子的画板,画板上每个格子都有颜色,现在要把所有格子的颜色改成红.绿或者蓝,改变的代价是二者RGB值的曼哈顿距离,还要求红绿蓝格子个数的最大值和最小值要尽可能接近,问最少的代 ...
- POJ2226 Muddy Fields(二分图最小点覆盖集)
题目给张R×C的地图,地图上*表示泥地..表示草地,问最少要几块宽1长任意木板才能盖住所有泥地,木板可以重合但不能盖住草地. 把所有行和列连续的泥地(可以放一块木板铺满的)看作点且行和列连续泥地分别作 ...
- Real Adaboost总结
Real Adaboost分类器是对经典Adaboost分类器的扩展和提升,经典Adaboost分类器的每个弱分类器仅输出{1,0}或{+1,-1},分类能力较弱,Real Adaboost的每个弱分 ...
- html页面元素加载顺序
一般来说,添加背景图片有三种办法: 直接写在标签的style里面,如: <div style="background-image:url('images/Css.JPG')" ...
- php 即使客户端或者服务器断开(如关掉浏览器)脚本也可以继续执行
<?php ignore_user_abort(); // run script in background set_time_limit(0); // run script forever $ ...
- sqlmap我常用到的几个参数
-r "抓的包存放的文件路径.txt" 一般方便带cookie与session类型 --dbms Oracle/Mysql 指定数据库类型 指定变量注入点变量:在变量 ...
- C# - Try catch 中 使用 End()
如果在Try中执行End()会被扑捉到.这通常并不是我想要捕捉的错误.而是结束页面的手段.可通过调整为以下代码结构修复 //this.DbHelp.BeginTransaction(); //设置回滚 ...
- Html - a标签如何包裹Div
a标签如何包裹Div? 其实应该将思路转变为将a标签作为一个遮罩来覆盖div. 做法是将a标签放置在该div下,通过将div进行相对定位[position:relative] 将a标签进行绝对定位[p ...
- Nova相关命令收集
1. nova list 2. sudo nova-manage service list 8. 创建/删除浮动IP池 nova floating-ip-bulk-create 192.168.0.2 ...
- 《GK101任意波发生器》升级固件发布(版本:1.0.1build803)
一.固件说明: 硬件版本:0,logic.3 固件版本:1.0.1.build803 编译日期:2014-08-06 ====================================== 二. ...