最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
JAVA中使用JSON进行数据传递示例
时间:2017-02-04 编辑:简简单单 来源:一聚教程网
最近在做一个基于JAVA Servlet的WEB应用以及对应的Anroid应用客户端的开发工作。
其中,在接口的访问和数据的传输方面使用的比较多的是使用JSON对象来操作格式化数据:在服务器端采用JSON字符串来传递数据并在WEB前端或者Android客户端使用JSON来解析接收到的数据。
首先,在JAVA中使用JSON需要引入 org.json 包, 并在程序中引入相应的JSON类:
代码如下 | 复制代码 |
importorg.json.JSONArray; importorg.json.JSONException; importorg.json.JSONObject; |
其次,在服务器端的Servlet类中,可以使用如下方法收集数据并生成相应的JSON字符串
代码如下 | 复制代码 |
//声明一个Hash对象并添加数据 Map params =newHashMap();
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 =newJSONArray(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对象
代码如下 | 复制代码 |
importorg.json.JSONArray; importorg.json.JSONException; importorg.json.JSONObject;
//别忘了添加上JSON包哦! publicclassStringToJSON { publicstaticvoidmain(String[] args)throwsJSONException{
System.out.println("abc"); //定义JSON字符串 String jsonStr ="{\"id\": 2,"+ " \"title\": \"json title\", "+ "\"config\": {"+ "\"width\": 34,"+ "\"height\": 35,"+ "}, \"data\": ["+ "\"JAVA\", \"JavaScript\", \"PHP\""+ "]}";
//转换成为JSONObject对象 JSONObject jsonObj =newJSONObject(jsonStr);
//从JSONObject对象中获取数据 JavaBean bean =newJavaBean();
//根据属性名称获取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(intindex =0, length = data.length(); index < length; index++) { //这里在org.json.JSONArray对象中居然没有找到toArray方法,求各位网友给出解决办法啊! // bean.setLanguages(String[]); } } }
classJavaBean{ privateintid ; privateString title; privateintwidth; privateintheight; privateString[] languages;
//这里省略了设置器和访问器 } |
2. JSON对象转换为String字符串
publicstaticvoidmain(String[] args)throwsJSONException {
//创建JSONObject对象
JSONObject json =newJSONObject();
//向json中添加数据
json.put("username","wanglihong");
json.put("height",12.5);
json.put("age",24);
//创建JSONArray数组,并将json添加到数组
JSONArray array =newJSONArray();
array.put(json);
//转换为字符串
String jsonStr = array.toString();
System.out.println(jsonStr);
}
最终输出结果为: [{"username":"wanglihong","height":12.5,"age":24}]
3. 集合转换为JSONArray对象
publicstaticvoidmain(String[] args)throwsJSONException{
//初始化ArrayList集合并添加数据
List
list.add("username");
list.add("age");
list.add("sex");
//初始化HashMap集合并添加数组
Map map =newHashMap();
map.put("bookname","CSS3实战");
map.put("price",69.0);
//初始化JSONArray对象,并添加数据
JSONArray array =newJSONArray();
array.put(list);
array.put(map);
//生成的JSON字符串为:[["username","age","sex"],{"price":69,"bookname":"CSS3实战"}]
}
相关文章
- Post请求Json格式数据到WCF服务 06-08
- SpringBoot测试配置属性与web启动环境解析 10-24
- vue中将el-switch值true、false改为number类型的1和0解析 10-24
- Vue中的路由配置项meta使用解读 10-24
- SpringBoot自定义bean绑定解析 10-24
- SpringBoot常用计量与bean属性校验和进制数据转换规则解析 10-24