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)

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

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. MemoryUsage:监测java虚拟机内存使用

    通过MemoryUsage可以查看Java 虚拟机的内存池的内存使用情况.MemoryUsage类有四个值(均以字节为单位): ===Init=== java虚拟机在启动的时候向操作系统请求的初始内存 ...

  2. 白盒测试实践--Day2

    累计完成任务情况: 阶段内容 参与人 完成CheckStyle检查 小靳 完成代码评审会议纪要和结果报告 小熊.小梁及其他 完成白盒测试用例 小尹 学习静态代码审核,确定评审表,开评审会确定高危区代码 ...

  3. Pandas -- Merge,join and concatenate

    Merge, join, and concatenate pandas provides various facilities for easily combining together Series ...

  4. Eclipse集成tomcat

    1.window --> Preferences 2.搜索runtime,选择Runtime Environments,点击add按钮 3.选择tomacat的版本,我的版本是7.x的,所以选择 ...

  5. 手机优秀app

    Mantano 阅读器 Aldiko   阅读器 掌阅阅读器 奇特阅读器 Gitden reader 网易蜗牛阅读

  6. PHP Windows系统下调用OpenOffice

    项目需要把用户上传的word文档转换为pdf文件,方便用户浏览.经过谷歌百度找到PHP可以使用COM组件调用微软的openoffice来实现文档转换 1,安装OpenOffice 安装OpenOffi ...

  7. win10 64位 python3.6 django1.11 MysqlDB No module named 'MySQLdb' 安装MysqlDB报错 Microsoft Visual C++ 14.0 is required

    在python3.6中操作数据库,再按python2.7安装MySQLdb进行数据库连接已经不可用了,我使用的是另外一个方法:PyMySQL,安装好之后还是不能直接连接MySQL的,启动项目后报No ...

  8. Java Project 转 Dynamic Web Project

    使用eclipse 工具, 右键Java Project 项目 Properties - Project Facets  - Convert to faceted form... - 勾选Dynami ...

  9. numpy数组与python的list互转,然后用json写入文件与c交互

    1.对于numpy的tofile方法,一个一维数组可以直接写成二进制形式,用c语言或者numpy.fromfile()可以读出来内容.而如果数组超过一维,tofile并不区分,也就是arr1=[1,2 ...

  10. [置顶] bzoj 1036 树的统计Count 点权值模板

    树链剖分 点权型可做模板,链路剖分的思想把点hash到线段树的上,然后可通过n*(log(n)*log(n))的复杂度在树上操作,在线段树上能操作的在链路上都能操作. #include<cstd ...