JAVA中使用JSON进行数据传递示例
程序员文章站
2024-03-08 19:13:22
最近在做一个基于java servlet的web应用以及对应的anroid应用客户端的开发工作。
其中,在接口的访问和数据的传输方面使用的比较多的是使用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实战"}] }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。