当前位置:网站首页 > Java基础 > 正文

java 中用json 教程



参考:https://www.runoob.com/w3cnote/fastjson-intro.html

Fastjson特性

  • 提供服务器端、安卓客户端两种解析工具,性能表现较好。
  • 提供了 toJSONString() 和 parseObject() 方法来将 Java 对象与 JSON 相互转换。调用toJSONString()方法即可将对象转换成 JSON 字符串,parseObject() 方法则反过来将 JSON 字符串转换成对象。
  • 允许转换预先存在的无法修改的对象(只有class、无源代码)。
  • Java泛型的广泛支持。
  • 允许对象的自定义表示、允许自定义序列化类。
  • 支持任意复杂对象(具有深厚的继承层次和广泛使用的泛型类型)。

FastJson使用:

 
  

其中 1.2.47 是版本号,根据需要使用特定版本,建议使用最新版本。

FastJson类库中最基本的类和方法定义:

JSON类在com.alibaba.fastjson.JSON包中。

JSON类提供了多种 Java对象<->JSON字符串 直接互相转换的方法。

JSON.parseObject():从字符串解析 JSON 对象。
JSON.parseArray():从字符串解析 JSON 数组。
JSON.toJSONString(obj/array):将 JSON 对象或 JSON 数组转化为字符串。




 
  

//从字符串解析JSON数组

 
  

//将JSON对象转化为字符串

 
  

//将JSON数组转化为字符串

 
  

JSON类中主要常用方法定义

 
  

JSONObject类在com.alibaba.fastjson.JSONObject包中。

 
  

JSONArray类在com.alibaba.fastjson.JSONArray包中。

 
  

样例:

 
  

使用JSON.toJSONString()将Java对象转换换为JSON字符串:

 
  

输出结果为:

 
  

我们还可以自定义输出,并控制字段的排序、日期显示格式、序列化标记等。接下来我们更新bean并添加几个字段:

 
   

以上代码中我们列出了基本参数类别,并使用 @JSONField 注解,以便实现自定义转换:

  • format参数用于格式化Data的属性。
  • serialize参数指定字段不序列化。默认情况下,FastJson库可以序列化Java bean实体,但可以使用serialize指定字段不序列化。
  • ordinal参数指定字段的顺序。
    输出结果为:

 
   

使用继承的toJSONString()方法样例:

 
   

输出结果为:

 
   

@JSONField 的作用对象:

  • Field
  • Setter和Getter方法
    注意:FastJson 在进行操作时,是根据Getter和Setter 的方法进行的,并不是依据 Field 进行。
    注意:若属性是私有的,必须有set方法。否则无法反序列化。




JSONField定义:

 
   

@JSONField 配置方式:

  1. 配置在 field 上
 
    
  1. 配置在 getter/setter 上
 
    
  1. 使用format配置日期格式化
 
    
  1. 使用serialize/deserialize指定字段不序列化/反序列化
 
    
  1. 使用ordinal指定字段的顺序
    默认fastjson序列化一个java bean,是根据 fieldName 的字母序进行序列化的,你可以通过 ordinal 指定字段的顺序。这个特性需1.1.42以上版本。

 
    
  1. 不返回null字段数据
    在相关对象的类上添加 @JsonInclude 注解,设定值为 NON_NULL

 
    

则HTTP Response返回的该类的对象的JSON数据如下所示,无为null的字段

 
    
  1. 返回null字段数据
    在相关对象的类上添加 @JsonInclude 注解,设定值为 ALWAYS

 
    

则HTTP Response返回的该类的对象的JSON数据如下所示,其中包含null的字段

 
    

@JsonInclue注解不设定值的情况下,默认使用 ALWAYS。

实例:

 
    

在上例中,首先从 JSON 格式的字符串中构造一个 JSON 对象,之后依次读取字符串、整数、布尔值以及数组。打印结果如下:

 
    

  1. 实例:
 
    
  • 注意:反序列化时为对象时,必须要有默认无参的构造函数,否则会报异常:com.alibaba.fastjson.JSONException: default constructor not found.
 
    
 
    

(1)JSONArray的方法

 
    

在某些场景下,对Value做过滤,需要获得所属JavaBean的信息,包括类型、字段、方法等。在fastjson-1.2.9中,提供了ContextValueFilter,类似于之前版本提供的ValueFilter,只是多了BeanContext参数可用。

 
    

以上实例中我们隐藏了 DATE OF BIRTH 字段,并过滤名字不包含John的字段:

 
    

  • NameFilter: 序列化时修改 Key。
  • SerializeConfig:内部是个map容器主要功能是配置并记录每种Java类型对应的序列化类。
 
    

注意我们使用的是 toJSONStringWithDateFormat() 而不是 toJSONString() ,它可以更快速的格式化日期。输出结果:

 
    

版权声明


相关文章:

  • java 入门教程目录2025-12-02 09:58:05
  • 动力节点 java教程2025-12-02 09:58:05
  • java极速入门教程2025-12-02 09:58:05
  • java报表导出excel视屏教程2025-12-02 09:58:05
  • 学java的教程2025-12-02 09:58:05
  • java实战项目教程2025-12-02 09:58:05
  • java166教程2025-12-02 09:58:05
  • java讲师视频教程2025-12-02 09:58:05
  • java分解视频教程2025-12-02 09:58:05
  • 小黑塔制作教程java2025-12-02 09:58:05