浅谈Json在java中的使用
来源:互联网 发布:淘宝老客户怎么维护 编辑:程序博客网 时间:2024/05/01 06:44
1.一般我们在进行客户端和服务端交换数据的时候,会使用Json来进行数据的传输,即转换成字符串类型的json数据来进行数据的交换。
2.Json类型的数据一般是 JSONObject(对象),JSONArray(数组)。一般来说二组的区别在于,对象是无序的,而数组是有序的,看具体需求选择使用。
import org.json.simple.JSONArray;import org.json.simple.JSONObject;/** * 使用的是json-lib-2.4.jar * @author yes * */public class TestJson { public static void main(String[] args) throws Exception { //定义一个json对象 JSONObject jo = new JSONObject(); jo.put("id", "1"); jo.put("name", "yang"); jo.put("age", "13"); //定义一个Json数组 JSONArray ja = new JSONArray(); ja.add(0, "yang"); ja.add(1,"li"); ja.add(2, "zhang"); System.out.println("json对象的格式:"+jo); System.out.println("json数组的格式:"+ja); //使用类自带的方法来转换成String类型 String str_ = jo.toJSONString(); String strs_ = ja.toJSONString(); System.out.println("json对象-->String"+str_); System.out.println("json数组-->String"+strs_); } }执行结果:json对象的格式:{"id":"1","age":"13","name":"yang"}json数组的格式:["yang","li","zhang"]json对象-->String{"id":"1","age":"13","name":"yang"}json数组-->String["yang","li","zhang"]
3.Json在数据传输中的使用
a.将各种类型装换成Json类型字符串
import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class Test03 { public static void main(String[] args) { //创建一个User对象(name,age,id) User user = new User(); user.setAge(22); user.setName("张三"); user.setId(33); List li = new ArrayList(); //创建一个Map,放入三组值 Map<String, Object> hashMap = new HashMap<String, Object>(); hashMap.put("name", "ZHULI"); hashMap.put("age", "30"); hashMap.put("id", "4"); //向List中放入数据 li.add(0, "123"); li.add(1,"444"); li.add(hashMap); //将List,Map,Bean---->json类型字符串 String stra = GsonUtil.GsonString(user); String strb = GsonUtil.GsonString(hashMap); String strc = GsonUtil.GsonString(li); System.out.println("Bean-->String结果:"+stra); System.out.println("Map-->String结果:"+strb); System.out.println("List-->String结果"+strc); }}执行结果:Bean-->String结果:{"name":"张三","age":22,"id":33}Map-->String结果:{"id":"4","age":"30","name":"ZHULI"}List-->String结果["123","444,{"id":"4","age":"30","name":"ZHULI"}]
b.将各种类型的json类型字符串解析出来
//1.将JsonArray类型字符串转换成Bean或listimport java.util.List;import Socket.User;public class Test02 {public static void main(String[] args) { //定义一个jsonArrayString String json = "[{'name':'yang','id':'1','age':'18'}," + "{'name':'zhang','id':'2','age':'13'}]"; //jsonString转list,User类自己创建,三个属性 List<User> li = GsonUtil.jsonArrayToList(json,User.class); for(User user : li){ String name = user.getName(); Integer id = user.getId(); Integer age = user.getAge(); System.out.println("学生的姓名是:"+name+" "+"ID是:"+id+" "+"年龄是:"+age); } }}执行结果:学生的姓名是:yang ID是:1 年龄是:18学生的姓名是:zhang ID是:2 年龄是:13
将JsonArray类型字符串转换成List中包含map的
import java.util.List;import java.util.Map;public class Test05 { public static void main(String[] args) { String json = "['123','444',{'id':'4','age':'30','name':'ZHULI'}]"; //list中含有Map但不全是Map List li = GsonUtil.GsonToListMap(json); Map m =(Map) li.get(2); System.out.println(m.get("age")); }}//如果list中全部是Map类型的数据,使用GsonToListMap();方法执行结果:30123
c.实用性比较高的,复杂的数据转化成Bean进行操作
//先贴出学生类package TestJson;import java.util.ArrayList;import java.util.HashMap;import java.util.List;public class Student { private String id; private String nickName; private String email; private String age; private List<String> books = new ArrayList<String>(); private HashMap<String, String> booksMap = new HashMap<String, String>(); //获取set,get方法 public String getId() { return id; } public void setId(String id) { this.id = id; } public String getNickName() { return nickName; } public void setNickName(String nickName) { this.nickName = nickName; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public List<String> getBooks() { return books; } public void setBooks(List<String> books) { this.books = books; } public HashMap<String, String> getBooksMap() { return booksMap; } public void setBooksMap(HashMap<String, String> booksMap) { this.booksMap = booksMap; } }
//测试代码package TestJson;public class Test05 { public static void main(String[] args) { //定义一个包含list,map类型的字符串 String json = "{'books':['数学','语文','英语','物理','化学','生物'],'booksMap':{'3':'英语','2':'语文','1':'数学','6':'生物','5':'化学','4':'物理'},'email':'965266509@qq.com','nickName':'小明','id':'1','age':'22'}"; //转化成Bean Student su = GsonUtil.GsonToBean(json, Student.class); System.out.println("学生的姓名是:"+su.getNickName()); System.out.println("学生学习的第一门课:"+su.getBooks().get(0)); System.out.println("序号3课程是:"+su.getBooksMap().get("3")); }}执行结果:学生的姓名是:小明学生学习的第一门课:数学序号3对应的课程是:英语
5.将基本的转化实现放到了一个工具类中。GsonUtil.java
import java.util.ArrayList;import java.util.List;import java.util.Map;import com.google.gson.Gson;import com.google.gson.JsonArray;import com.google.gson.JsonElement;import com.google.gson.JsonParser;import com.google.gson.reflect.TypeToken;/** * 使用gson来操作Json * 1.对象实体类,list,map,等转化成----->jsonString(进行数据传递) * 2.jsonString转化成----->对象实体类,list,map(解析返回的数据) * 3.我使用的是gson-2.2.2.jar * @author yes * */public class GsonUtil {private static Gson gson = null; static { if (gson == null) { gson = new Gson(); } } /** * 将object对象转成json字符串(jsonString) * boject 可以是List,也可以是Bean(对象类型) * @param object */ public static String GsonString(Object object) { String gsonString = null; if (gson != null) { gsonString = gson.toJson(object); } return gsonString; } /**入参是json对象 * 将gsonObjectString转成泛型bean(实体类) * @param gsonString */ public static <T> T GsonToBean(String gsonString, Class<T> cls) { T t = null; if (gson != null) { t = gson.fromJson(gsonString, cls); } return t; } /** * 这里的入参是json数组类型的字符串 * jsonArrayString转成list */ public static <T> List<T> jsonArrayToList(String json, Class<T> cls) { Gson gson = new Gson(); List<T> list = new ArrayList<T>(); JsonArray array = new JsonParser().parse(json).getAsJsonArray(); for(final JsonElement elem : array){ list.add(gson.fromJson(elem, cls)); } return list; } /** * List对泛型没有要求 * jsonString转成list中有map的 */ public static <T> List<Map<String, T>> GsonToListMap(String gsonString) { List list = null; if (gson != null) { list = gson.fromJson(gsonString, new TypeToken<List>() { }.getType()); } return list; } /** * 要求List中全部是Map * jsonString转成list中有map的 */ public static <T> List<Map<String, T>> GsonToListMaps(String gsonString) { List<Map<String, T>> list = null; if (gson != null) { list = gson.fromJson(gsonString, new TypeToken<List<Map<String, T>>>() { }.getType()); } return list; } /** * jsonString转成map的 */ public static <T> Map<String, T> GsonToMaps(String gsonString) { Map<String, T> map = null; if (gson != null) { map = gson.fromJson(gsonString, new TypeToken<Map<String, T>>() { }.getType()); } return map; } /** * map转jsonString,指定了Map类型 */ public static String MapToJson(Map<String,Object> map){ String str = null; if(gson != null){ str = gson.toJson(map); } return str; } }
6.差不多在项目中的使用可以实现了,这里我从开始不懂到自己敲出来,也是参考了很多博客前辈的知识讲解。在学习中进步。
1 0
- 浅谈Json在java中的使用
- 浅谈Json在java中的使用
- Json在java中的使用
- json在java中的使用
- json 在Java中的使用
- json在java中的使用
- JSON 在java中的使用Json
- json在java和js中的使用
- json教程及json在Java中的使用
- JSON的简介和在Java中的使用
- JSON 在C++中的使用
- Json在android中的使用
- json在springMVC中的使用
- json在springMVC中的使用
- Json在Unity中的使用
- json:在js中的使用
- JSON在JAVA中的操作
- JSON在java中的应用
- RT5350资料
- 使用WindowLayoutParams要注意的地方
- 深度增强学习方向论文整理
- EasyUI datagrid可编辑
- Android UI开发: 横向ListView(HorizontalListView)及一个简单相册的完整实现 (附源码下载)
- 浅谈Json在java中的使用
- Java多态总结
- 单例设计模式
- mssql2012以后新增的offset分页,看起来爽死了!!!
- mybatis一对一关联
- Java多态总结
- 51nod 1433 0和5
- Linux(centOS)下中文输入的问题
- 关于eclipse中server中的Tomcat的环境配置问题