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)
package EntityClass; import com.alibaba.fastjson.annotation.JSONField; import java.util.Objects; public class StudentEntity { @JSONField(ordinal = 0) private int id; @JSONField(ordinal = 1) private String name; @JSONField(ordinal = 2) private Integer age; @JSONField(ordinal = 3) private String address; @JSONField(ordinal = 4) private String score; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getScore() { return score; } public void setScore(String score) { this.score = score; } @Override public boolean equals(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); } @Override public int hashCode() { return Objects.hash(id, name, age, address, score); } }
(2)利用hibernate查询数据库中的数据,并返回查询结果集合。
import EntityClass.EntryFirminfoEntity; import EntityClass.StudentEntity; import EntityClass.UserEntity; import EntityClass.UserinfoEntity; import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.criterion.Restrictions; import java.util.List; public class HibernateTest01 { //根据Android客户端发送的参数,利用hibernate对数据库中的StudentEntity表进行查询,将查询结果放入一个集合返回 public static List<StudentEntity> queryStudentByUserInput(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<StudentEntity> studentinfolist=criteria.list(); //开启一个新的事务Transaction session1.beginTransaction(); //提交事务,此处才是真正与数据库交互的语句 session1.getTransaction().commit(); HibernateTools.closeSession(); return studentinfolist; } }
(3)输出json结果
import EntityClass.StudentEntity; import com.alibaba.fastjson.JSON; import java.util.List; public class Test01 { public static void main(String[] args) { //调用hibernate,根据用户输入查询数据 List<StudentEntity> 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