java FastJSON的使用

摘要:
JSON是JS对象的字符串表示。它使用文本来表示JS对象的信息,这本质上是一个字符串。

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"}]

原数据库中的数据为:

java FastJSON的使用第1张

 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的使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用Maven构建和部署J2EE应用程序的EAR文件Android 开发学习进程0.13 Androidstudio快捷键 xmlns下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C# 调用Java的WebService的3种方式

C# 调用WebService的3种方式 :直接调用、根据wsdl生成webservice的.cs文件及生成dll调用、动态调用 关于soapheader调用,可以参考 C#调用Java的WebService添加SOAPHeader验证1.问题描述 调用的Java的webservice string Invoke(string func, string r...

Android蓝牙开发技术学习总结

Android开发,提供对蓝牙的通讯栈的支持,允许设别和其他的设备进行无线传输数据。应用程序层通过安卓API来调用蓝牙的相关功能,这些API使程序无线连接到蓝牙设备,并拥有P2P或者多端无线连接的特性。 蓝牙的功能: 1、扫描其他蓝牙设备 2、为可配对的蓝牙设备查询蓝牙适配器 3、建立RFCOMM通道(其实就是尼玛的认证) 4、通过服务搜索来链接其他的设备...

浅尝SignalR

垂涎WebSocket已经很久了,终于有了学习的机会。 对于ASP.NET,试着用了下Fleck,比较方便,但是问题多多,一个挂则全挂,没时间去研究。 之后,找到了SignalR,看大神们的博客后感觉简单且好用。 原理神马的,后面再来贴,先记录下Demo小激动一下。 首先,创建一个MVC项目SignalRDemo。 接着,引入SignalR: 引用完成后...

熟悉Hbase常用命令及操作

(一) 编程实现以下指定功能,并用Hadoop提供的HBase Shell命令完成相同任务: 列出HBase所有的表的相关信息,例如表名; 在终端打印出指定的表的所有记录数据; 向已经创建好的表添加和删除指定的列族或列; 清空指定的表的所有记录数据; 统计表的行数。 (二)HBase数据库操作 1.现有以下关系型数据库中的表和数据,要求将其转换为适合于HB...

webMagic入门案例,启动流程,及从页面中获取元素,并放到Page对象中,并成功拿出

本例作用: 1)首次成功配置,了解软件运行机制2)从页面中获取元素三种方式 jsoup,xpath,css3) page.putField("subject","尝试存入结果项的内容,可从页面中获取值");4)page.getResultItems().get("subject") 从结果集中拿出数据5)List<String> links =...

(三)Java 高级特性

第一章 集合框架 集合框架是为表示和操作集合而规定的一种统一的标准系结构。集合框架都包含三个块内容对外的接口、接口的实现和集合运算的算法。 接口:表示集合的抽象数据类型,如Collection、List、Set、Map、Iterator。 实现:集合框架中接口的具体实现,如ArrayList、LinkedList、HashMap、HashSet。 算法:...