1.JSON介绍
JSON(javaScript Object Notation)是一种轻量级的数据交换格式。主要采用键值对({"name": "json"})的方式来保存和表示数据。JSON是JS对象的字符串表示法,它使用文本表示一个JS对象的信息,本质上是一个字符串。
2.FastJson简介
fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。
3.fastjson的优点
(1)速度快:fastjson相对其他JSON库的特点是快,从2011年fastjson发布1.1.x版本之后,其性能从未被其他Java实现的JSON库超越。
(2)使用广泛:fastjson在阿里巴巴大规模使用,在数万台服务器上部署,fastjson在业界被广泛接受。在2012年被开源中国评选为最受欢迎的国产开源软件之一。
(3)测试完备
(4)功能完备:支持泛型,支持流处理超大文本,支持枚举,支持序列化和反序列化扩展。
4.fastjson的使用
(1)引入相应版本的fastjson的jar包(即对java工程添加依赖)
下载地址:https://github.com/alibaba/fastjson
5.使用实例
(1)javabean
fastjson在封装成json的时候会自动按照属性名称排序,也就是abcd…的顺序排序。 但是很多时候,我们可能需要json按照我们的顺序输出。
解决方法:在javabean的成员变量中加入里注解:@JSONField(ordinal = 0)
packageEntityClass;importcom.alibaba.fastjson.annotation.JSONField;importjava.util.Objects;public classStudentEntity {
@JSONField(ordinal= 0)private intid;
@JSONField(ordinal= 1)privateString name;
@JSONField(ordinal= 2)privateInteger age;
@JSONField(ordinal= 3)privateString address;
@JSONField(ordinal= 4)privateString score;public intgetId() {returnid;
}public void setId(intid) {this.id =id;
}publicString getName() {returnname;
}public voidsetName(String name) {this.name =name;
}publicInteger getAge() {returnage;
}public voidsetAge(Integer age) {this.age =age;
}publicString getAddress() {returnaddress;
}public voidsetAddress(String address) {this.address =address;
}publicString getScore() {returnscore;
}public voidsetScore(String score) {this.score =score;
}
@Overridepublic booleanequals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;
StudentEntity that=(StudentEntity) o;return id == that.id &&Objects.equals(name, that.name)&&Objects.equals(age, that.age)&&Objects.equals(address, that.address)&&Objects.equals(score, that.score);
}
@Overridepublic inthashCode() {returnObjects.hash(id, name, age, address, score);
}
}
(2)利用hibernate查询数据库中的数据,并返回查询结果集合。
importEntityClass.EntryFirminfoEntity;importEntityClass.StudentEntity;importEntityClass.UserEntity;importEntityClass.UserinfoEntity;importorg.hibernate.Criteria;importorg.hibernate.Session;importorg.hibernate.criterion.Restrictions;importjava.util.List;public classHibernateTest01 {//根据Android客户端发送的参数,利用hibernate对数据库中的StudentEntity表进行查询,将查询结果放入一个集合返回
public static ListqueryStudentByUserInput(String studentname, String realAddress, String riskrank){//1.创建一个session对象
Session session1=HibernateTools.getSession();//2.通过session的createCriteria创建一个Criteria 对象
Criteria criteria=session1.createCriteria(StudentEntity.class);//3. Criteria.add 增加约束。
criteria.add(Restrictions.like("name","%"+studentname+"%"));//4.调用list()方法返回查询结果的集合
List studentinfolist=criteria.list();//开启一个新的事务Transaction
session1.beginTransaction();//提交事务,此处才是真正与数据库交互的语句
session1.getTransaction().commit();
HibernateTools.closeSession();returnstudentinfolist;
}
}
(3)输出json结果
importEntityClass.StudentEntity;importcom.alibaba.fastjson.JSON;importjava.util.List;public classTest01 {public static voidmain(String[] args) {//调用hibernate,根据用户输入查询数据
List studentEntityList= HibernateTest01.queryStudentByUserInput("","","");
System.out.println(JSON.toJSONString(studentEntityList));
}
}
输出结果为:
[{"id":1,"name":"linda","age":12,"address":"天台","score":"80"},{"id":2,"name":"lucky","age":26,"address":"杭州","score":"95"},{"id":3,"name":"bob","age":34,"address":"金华","score":"75"},{"id":4,"name":"Alice","age":27,"address":"湖州","score":"88"}]
原数据库中的数据为:
6.复杂json格式字符串到JavaBean_obj的转换
Teacher teacher = JSONObject.parseObject(COMPLEX_JSON_STR,Teacher.class);
注意:Teacher为javabean实体类。
参考文献:https://blog.csdn.net/a1032818891/article/details/81334874