JavaWeb 第7章 JQuery 的 Ajax 交互扩展 任务4:使用FastJSON 生成 JSON 格式数据

任务4:使用FastJSON 生成 JSON 格式数据

     JSON 数据格式被广泛运用于客户端与服务器我之间的数据传递过程中,在使用 Ajax 

技术对新闻发布部分功能进行改造时,也使用了 JSON 格式的响应,方便了复杂格式数据

的传递和解析。但在实现过程中,服务器端需要按照 JSON 的语法对数据进行拼接,这是

一个烦琐且易出错的过程,出现语法错误也不好排查,所以接下来我们将使用FastJSON 

工具来简化这一工作。

  7.4.1  认识 FastJSON

      FastJSON 是一个由 Java  语言实现的性能很好的 JSON 解析器和生成器,来自阿里

巴巴。其代码托管在 GitHub 服务器上,在 https://github.com/alibaba/fastjson/releases

页面可以找到其不同版本的 jar  文件和源代码下载路径。

     FastJSON 提供了把 Java 对象序列化成 JSON 字符串,以及将 JSON 字符串反序列化

得到 Java 对象的功能。根据需要,我们主要了解将 Java 对象序列化成 JSON 字符串的功能。

   7.4.2  使用 FastJSON API 生成 JSON 数据

       FastJSON API 的入口类是 com.alibaba.fastjson.JSON ,基本上常用的操作都可以通

过该类的静态方法直接完成。其中,用于将 Java 对象序列化成 JSON 字符串的常用方法

如下。

1.  public static String toJSONString(Object object): 该方法将 Java 对象序列化成 JSON 字符串。

2. public static String toJSONString(Object object,boolean prettyFormat):prettyFormat 为

  true 时将产生带格式的 JSON 字符串;prettyFormat 为 false ,则与 toJSONString(Object object)

  相同。

3. public static String toJSONString(Object object,SerializerFeature…features): 可以

通过 features 参数指定更多序列化规则,常用规则将在下文中介绍。

4. public static String toJSONStrigWithDataFormat(Object object,String dataFormat,

SerializerFeature…features): 可以通过 dateFormat 参数指定日期类型的输出格式。

      枚举类型  SerializerFeature 中定义了多种序列化属性,可以根据需要使用,常用的

属性及其说明列表如下。

1. quoteFieldNames: 输出 JSON 的字段名是使用双引号,默认即使用。

2. WriteMapNullValue : 输出值为 null 的字段,默认不输出。

3.  WriteNullListAsEmpty: 将值为 null 的 List 字段输出为 [ ] 。

4. WriteNullStringAsEmpty : 将值为null 的 String 字段输出为 "" 。

5. WriteNullNumberAsZero : 将值为 null 的数值字段输出为 0 。

6. WriteNullBooleanAsFalse : 将值为 null 的 Boolean 字段输出为 false 。

7. SkipTransientField : 忽略 transient 字段,默认即忽略。

8. PrettyFormat : 格式化 JSON 字符串,默认不格式化。

   列如,序列化时要包含值为 null 的字段,且数值为 null 输出为 0 ,String 为 null 输

出为 " " ,可以按如下方式调用。

String json = JSON.toJSONString(someData,SerializerFeatre.WriteMapNullValue,
SerializerFeature.WriteNullNumberAsZero,
SerializerFeature.WriteNullStringAsEmpty);

    提示

       更多序列化属性的作用可以通过阅读 FastJSON 的文档进行了解。

     了解了 FastJSON 的常用 API ,接下来改造管理员界面获取新闻列表功能的实现,

服务器端以 JSON 格式返回新闻数据,并使用 FastJSON 简化服务器端生成 JSON

字符串的工作。 NewsServlet 中的关键代码如 示例 12 所示。

     示例 12

……//省略其他代码
else if("list".equals(opr)){//编辑新闻时对新闻的查找
    List<News> list = newsService.findAllNews();
    String newsJSON = JSON.toJSONStringWithDataFormat(list,
                                        "yyyy-MM-dd HH:mm:ss");
    out.print(news.JSON);
}……//省略其他代码

客户端脚本接收 JSON 格式的响应并解析展示的代码此处省略。

可以看出,服务器端生成 JSON 字符串的工作量得到了极大简化,且不易发生错误。

     技能训练

      上机练习 6 ——使用 FastJSON 改造管理员页面加载主题列表功能

        需求说明 

     (1)在管理员页面单击 "编辑主题"  链接时,以 Ajax 方式获取主题列表并在管理

  员页面展示,使用 JSON 返回列表内容。

     (2) 使用 FastJSON 生成 JSON 格式的响应字符串。

猜你喜欢

转载自blog.csdn.net/weixin_44129498/article/details/93376318