1.Json
JSON(JavaScriptObject Notation, JS对象简谱)是一种轻量级的数据交换格式,独立于编程语言的文本格式来存储和表示数据。Json数据的格式更加的简单,易读,前后端分离的项目主要就是使用json格式就行数据的传输。
Json主要有两种格式,一种是json对象,另一种就是json数组。
对象是一个无序的“‘名称/值’对”集合。一个对象以{左括号开始,}右括号结束。每个“名称”后跟一个:冒号;“‘名称/值’ 对”之间使用,逗号分隔,例如:
{"id": 1,"name": "zhangsan","age": 18}
和普通的 JS 数组一样,JSON 表示数组的方式也是使用方括号 [],例如:
[{"id": 1,"name": "zhangsan","age": 18},{"id": 2,"name": "lisi","age": 20}]
这里主要介绍两种json数据和Java相互转换的方式:JDK和阿里巴巴公司开发的fastjson
2.JDK
导入相应的Maven坐标:
<dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib-ext-spring</artifactId><version>1.0.2</version></dependency>
创建一个Java对象(User)
public class User {int id;String name;int age;//生成对应的get、set、有参、无参、toString方法}
2.1 JSONObject
JSONObject主要用于处理对象使用(也可以用来处理数组)
//java对象转换为json对象JSONObject feiji = JSONObject.fromObject(new User(1, "feiji", 22));System.out.println("json:"+feiji);//json --> javaUser user = (User) JSONObject.toBean(feiji, User.class);System.out.println("java:"+user);//处理数组JSONArray jsonObject1 = JSONArray.fromObject(jsonString);User[] list = (User[]) jsonObject1.toArray(jsonObject1, User.class);
输出结果如下:
json:{"age":22,"id":1,"name":"feiji"}java:User{id=1, name='feiji', age=22}
2.2 JSONArray
JSONArray主要用于处理数组
//java --> jsonArrayList<User> list1 = new ArrayList<>();list1.add(new User(1,"zhangsan",22));list1.add(new User(2,"lisi",23));JSONArray jsonArray = new JSONArray();jsonArray.add(list1);System.out.println(jsonArray);//json --> javaList list = (List) JSONArray.toCollection(jsonArray);System.out.println(list);
3.FastJson
FastJson是阿里巴巴开源的Java对象和JSON格式字符串的快速转换的工具库,fastjson是目前java语言中最快的json库,比自称最快的jackson速度要快。
使用前,首先要引入对应的Maven坐标:
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.79</version></dependency>
3.1 对象转换
//java --> jsonString feiji = JSON.toJSONString(new User(1, "feiji", 22));System.out.println(feiji);//json --> javaString us = "{\"id\":1,\"name\":\"zhangsan\",\"age\":18}";User user = JSON.parseObject(feiji, User.class);Object parse = JSON.parse(us);System.out.println(user);System.out.println(parse);
toJSONString和parseObject(parse)方法提供了很多的重载方式,供我们使用。
3.2 数组转换
//json --> javaString jsonString = "[{\"id\":1,\"name\":\"zhangsan\",\"age\":18}," +"{\"id\":2,\"name\":\"lisi\",\"age\":20}]";List<User> users = JSON.parseArray(jsonString, User.class);for (int i = 0; i < users.size(); i++) {System.out.println(users.get(i));}
结果如下:
User{id=1, name='zhangsan', age=18}User{id=2, name='lisi', age=20}
这里只是写了一部分功能(工作中用到,正好记录一下)。
如果觉得《Json对象(数组)与Java对象(集合)的相互转换》对你有帮助,请点赞、收藏,并留下你的观点哦!