1.JSON介绍

JSON(javaScript Object Notation)是一种轻量级的数据交换格式。主要采用键值对({"name": "json"})的方式来保存和表示数据。JSONJS对象的字符串表示法,它使用文本表示一个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)

  1. package EntityClass;
  2.  
  3. import com.alibaba.fastjson.annotation.JSONField;
  4.  
  5. import java.util.Objects;
  6.  
  7. public class StudentEntity {
  8. @JSONField(ordinal = 0)
  9. private int id;
  10. @JSONField(ordinal = 1)
  11. private String name;
  12. @JSONField(ordinal = 2)
  13. private Integer age;
  14. @JSONField(ordinal = 3)
  15. private String address;
  16. @JSONField(ordinal = 4)
  17. private String score;
  18.  
  19. public int getId() {
  20. return id;
  21. }
  22.  
  23. public void setId(int id) {
  24. this.id = id;
  25. }
  26.  
  27. public String getName() {
  28. return name;
  29. }
  30.  
  31. public void setName(String name) {
  32. this.name = name;
  33. }
  34.  
  35. public Integer getAge() {
  36. return age;
  37. }
  38.  
  39. public void setAge(Integer age) {
  40. this.age = age;
  41. }
  42.  
  43. public String getAddress() {
  44. return address;
  45. }
  46.  
  47. public void setAddress(String address) {
  48. this.address = address;
  49. }
  50.  
  51. public String getScore() {
  52. return score;
  53. }
  54.  
  55. public void setScore(String score) {
  56. this.score = score;
  57. }
  58.  
  59. @Override
  60. public boolean equals(Object o) {
  61. if (this == o) return true;
  62. if (o == null || getClass() != o.getClass()) return false;
  63. StudentEntity that = (StudentEntity) o;
  64. return id == that.id &&
  65. Objects.equals(name, that.name) &&
  66. Objects.equals(age, that.age) &&
  67. Objects.equals(address, that.address) &&
  68. Objects.equals(score, that.score);
  69. }
  70.  
  71. @Override
  72. public int hashCode() {
  73.  
  74. return Objects.hash(id, name, age, address, score);
  75. }
  76. }

(2)利用hibernate查询数据库中的数据,并返回查询结果集合。

  1. import EntityClass.EntryFirminfoEntity;
  2. import EntityClass.StudentEntity;
  3. import EntityClass.UserEntity;
  4. import EntityClass.UserinfoEntity;
  5. import org.hibernate.Criteria;
  6. import org.hibernate.Session;
  7. import org.hibernate.criterion.Restrictions;
  8.  
  9. import java.util.List;
  10.  
  11. public class HibernateTest01 {
  12.  
  13. //根据Android客户端发送的参数,利用hibernate对数据库中的StudentEntity表进行查询,将查询结果放入一个集合返回
  14. public static List<StudentEntity> queryStudentByUserInput(String studentname, String realAddress, String riskrank){
  15. //1.创建一个session对象
  16. Session session1=HibernateTools.getSession();
  17. //2.通过session的createCriteria创建一个Criteria 对象
  18. Criteria criteria=session1.createCriteria(StudentEntity.class);
  19. //3. Criteria.add 增加约束。
  20. criteria.add(Restrictions.like("name","%"+studentname+"%"));
  21. //4.调用list()方法返回查询结果的集合
  22. List<StudentEntity> studentinfolist=criteria.list();
  23. //开启一个新的事务Transaction
  24. session1.beginTransaction();
  25. //提交事务,此处才是真正与数据库交互的语句
  26. session1.getTransaction().commit();
  27. HibernateTools.closeSession();
  28. return studentinfolist;
  29. }
  30.  
  31. }

(3)输出json结果

  1. import EntityClass.StudentEntity;
  2. import com.alibaba.fastjson.JSON;
  3. import java.util.List;
  4.  
  5. public class Test01 {
  6. public static void main(String[] args) {
  7. //调用hibernate,根据用户输入查询数据
  8. List<StudentEntity> studentEntityList= HibernateTest01.queryStudentByUserInput("","","");
  9. System.out.println(JSON.toJSONString(studentEntityList));
  10.  
  11. }
  12. }

输出结果为:

  1. [{"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的转换

  1. Teacher teacher = JSONObject.parseObject(COMPLEX_JSON_STR,Teacher.class);

注意:Teacher为javabean实体类。

参考文献:https://blog.csdn.net/a1032818891/article/details/81334874

java FastJSON的使用的更多相关文章

  1. Java FastJson 介绍

    1.前言 1.1.FastJson的介绍: JSON协议使用方便,越来越流行,JSON的处理器有很多,这里我介绍一下FastJson,FastJson是阿里的开源框架,被不少企业使用,是一个极其优秀的 ...

  2. java FastJson的使用总结

    1.前言 1.1.FastJson的介绍: JSON(javaScript Object Notation)是一种轻量级的数据交换格式.主要采用键值对({"name": " ...

  3. java fastjson:Map与json以及JSONObject ,JSONObject与String互转

    import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson ...

  4. java fastjson 设置全局输出name最小化

    1.通过自定义Filter实现 https://github.com/alibaba/fastjson/wiki/SerializeFilter public class JackJsonLowCas ...

  5. java fastJson

    // 大区的数据 String cityList = "[{'title':'华北','value':'1','children':[{'title':'山东','value':'1.1', ...

  6. Java反序列化漏洞总结

    本文首发自https://www.secpulse.com/archives/95012.html,转载请注明出处. 前言 什么是序列化和反序列化 Java 提供了一种对象序列化的机制,该机制中,一个 ...

  7. dubbox2.8.4例子教程二

    简介 上篇博客写了个dubbox生产者,也用HttpClient代码测试了rest服务,下面记录dubbox消费者工程  一.工程结构    一.Simple.java package bhz.ent ...

  8. dubbox2.8.4例子教程一

    简介 Dubbo是一个来自阿里巴巴的开源分布式服务框架,当当根据自身的需求,为Dubbo实现了一些新的功能,包括REST风格远程调用.Kryo/FST序列化等等.并将其命名为Dubbox(即Dubbo ...

  9. 关于thrift的一些探索——thrift序列化技术

    thrift的IDL,相当于一个钥匙.而thrift传输过程,相当于从两个房间之间的传输数据. 图-1 (因为Thrift采用了C/S模型,不支持双向通信:client只能远程调用server端的RP ...

随机推荐

  1. [SoapUI] SoapUI可以做到些什么?功能有多强大?

    SoapUI. The Swiss-Army Knife of Testing. Whether you’re a tester, developer, business analyst, or ma ...

  2. 样条曲线catmull rom转bezier

    b0,..,b3是贝塞尔,c-1, c2是catmull rom控制点 [b0] = 1 [ 0 6 0 0] [c_1] [b1] - [-1 6 1 0] [c0] [b2] 6 [ 0 1 6 ...

  3. CodeForces 339B Xenia and Ringroad(水题模拟)

    题意:给定 n 个地方,然后再给 m 个任务,每个任务必须在规定的地方完成,并且必须按顺序完成,问你最少时间. 析:没什么可说的,就是模拟,记录当前的位置,然后去找和下一个位置相差多长时间,然后更新当 ...

  4. android在更新ADT以后报java.lang.NoClassDefFound的解决办法

    Android不是很熟.从网上找到了想要的代码后兴高采烈的导入workspace中,直接开Run. but在真机的时候Console.LogCat下都没显示什么有用的东西,就是写NDK编译完Nativ ...

  5. 单例模式到Java内存模型

    先说单例模式: 经典的单例模式实现: 饿汉式: public class Singleton { private static Singleton instance = new Singleton() ...

  6. speedbutton用法

  7. spring boot 错误:Check your ViewResolver setup

    Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as ...

  8. c#设计模式系列:观察者模式(Observer Pattern)

    引言 在现实生活中,处处可见观察者模式,例如,微信中的订阅号,订阅博客和QQ微博中关注好友,这些都属于观察者模式的应用.在这一章将分享我对观察者模式的理解,废话不多说了,直接进入今天的主题. 观察者模 ...

  9. 在Linux安装ASP.Net Core的运行时(Runtime)

    在部署的时候,如果您不想在您的Linux服务器上安装.Net Core SDK,您可以只安装Runtime,接下来我们看看该如何安装运行时Runtime. 下载运行时文件 下载页面:https://w ...

  10. OLEDB导入导出Excel

    using System;using System.Collections.Generic;using System.Data;using System.Data.OleDb;using System ...