1.JSON介紹java
JSON
(javaScript Object Notation)是一種輕量級的數據交換格式。主要採用鍵值對({"name": "json"}
)的方式來保存和表示數據。JSON
是JS
對象的字符串表示法,它使用文本表示一個JS
對象的信息,本質上是一個字符串。git
2.FastJson簡介github
fastjson是阿里巴巴的開源JSON解析庫,它能夠解析JSON格式的字符串,支持將Java Bean序列化爲JSON字符串,也能夠從JSON字符串反序列化到JavaBean。數據庫
3.fastjson的優勢json
(1)速度快:fastjson相對其餘JSON庫的特色是快,從2011年fastjson發佈1.1.x版本以後,其性能從未被其餘Java實現的JSON庫超越。服務器
(2)使用普遍:fastjson在阿里巴巴大規模使用,在數萬臺服務器上部署,fastjson在業界被普遍接受。在2012年被開源中國評選爲最受歡迎的國產開源軟件之一。session
(3)測試完備ide
(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