在这篇文章中,我们将看到如何将复杂的JSON实体反序列化为已有的Java对象。我们将看到怎么使用GSON的deserialiser
,以控制JSON实体映射到Java对象。
一、 前言
请注意,在这篇文章中我们将使用术语解析或反序列化。
下面列出的所有代码均放在: https://java-creed-examples.googlecode.com/svn/gson/Gson Deserialiser Example。
在这篇文章中,我们将看到如何将复杂的JSON实体反序列化为已有的Java对象。我们将看到怎么使用GSON的deserialiser
,以控制JSON实体映射到Java对象。
请注意,在这篇文章中我们将使用术语解析或反序列化。
下面列出的所有代码均放在: https://java-creed-examples.googlecode.com/svn/gson/Gson Deserialiser Example。
Java对象可以使用Gson API(Homepage)转换成JSON字符串。在本文中,我们将看到我们如何使用默认的Gson实现和自定义实现将Java对象转换为JSON字符串。
下面列出的所有代码均放在:http://java-creed-examples.googlecode.com/svn/gson/Gson Serialiser Example/
Gson提供了一组注解来简化序列化和反序列化过程。在本文中,我们将看到我们如何使用这些注释,以及如何简化Gson在Java对象和JSON对象之间的转换。
以下列出的所有代码在该链接可以找到:Gson Annotations Example。
Gson提供了四个注解,如Java文档中所述。这些注解可以分为三类。下面每个类别将分别讨论。
首先要搞清楚 Protocol Buffers
和代码生成器。
Protocol Buffers
只是一种数据传输协议格式,是Google定义的,它是与语言和平台均无关的,用于描述和传输数据的语言。开发人员可以在不同的环境中使用相同的模式开发。Protocol Buffers
中的 .proto
源文件是人类可读的,可以包含注释。Protocol Buffers
定义了一种紧凑的二进制格式,允许项目结构在不破坏现有客户端的情况下发展。
而代码生成器则是根据这个协议文档自动生成相应语言代码,任何组织机构都可以开发该工具。也就是说,使用代码生成器来读取 .proto
文件,并以你选择的语言生成源代码。这种方法有助于加快开发速度。。下文中将Google自身的工具称为标准工具,即 protoc
译自 CACHING MADE EASY WITH SPRING
Spring3.1引入了一种新的简单的方法来缓存结果。在本文中,我们将看到如何在我们的项目中使用新的Spring缓存。本文的读者应该有一些关于Spring和依赖注入的基本知识(或者也称为:控制反转IOC)。
以下列出的所有代码均可在 http://code.google.com/p/java-creed-examples/source/checkout 中找到。
看看如下的类:
多线程的Python程序总是让你看起来像是同时在运行多个函数。但是多线程有三大问题:
Google的 Protocol Buffer
是一种以二进制格式对消息进行编码和解码的库,可针对不同平台之间的紧凑性和可移植性进行优化。目前,核心库可以为 C/C++
,Java
和 Python
生成代码,但通过编写Protobuf编译器的插件可以实现自动生成其他语言代码。
已经有一个支持第三方语言的插件列表,但是你可以更加自己的需要来编写插件。在这篇文章中,将实践举例如何编写一个Protobuf编译器的插件。
在开始编写插件之前,我们需要安装 Protocol Buffer
编译器:
为了能够编译 .proto
文档,我们还需要安装相关语言的protobuf包, 这里我们用Python编写插件:
可变数量参数是指参数前带 *
的。如 *args
.
比如,你想要通过一些参数信息来打印日志。使用固定参数如下:
可以看出,当你没有values值传递的时候,你也不得不传递一个 []
。
Python的装饰器是AOP编程的一种实现,其他很多语言也都支持装饰器模式。
注:AOP是指面向切面编程,详见 AOP概念
一个装饰器允许你增加、修改或者完全修改一个方法或者函数的逻辑。使用装饰器,将与业务无关的逻辑移到装饰器中,这将会让你的代码更加的干净紧凑。
Buffer是一个写入通道或者从通道中读取的数据块。Buffer是Java I/O和Java NIO的主要差异之一。对于早期的Java I/O,数据是基于流的方式进行读写的,而现在NIO是基于buffer的方式来读写的。NIO中的通道跟流是一个意思。