- 浏览: 3047729 次
- 性别:
- 来自: 海外
文章分类
- 全部博客 (430)
- Programming Languages (23)
- Compiler (20)
- Virtual Machine (57)
- Garbage Collection (4)
- HotSpot VM (26)
- Mono (2)
- SSCLI Rotor (1)
- Harmony (0)
- DLR (19)
- Ruby (28)
- C# (38)
- F# (3)
- Haskell (0)
- Scheme (1)
- Regular Expression (5)
- Python (4)
- ECMAScript (2)
- JavaScript (18)
- ActionScript (7)
- Squirrel (2)
- C (6)
- C++ (10)
- D (2)
- .NET (13)
- Java (86)
- Scala (1)
- Groovy (3)
- Optimization (6)
- Data Structure and Algorithm (3)
- Books (4)
- WPF (1)
- Game Engines (7)
- 吉里吉里 (12)
- UML (1)
- Reverse Engineering (11)
- NSIS (4)
- Utilities (3)
- Design Patterns (1)
- Visual Studio (9)
- Windows 7 (3)
- x86 Assembler (1)
- Android (2)
- School Assignment / Test (6)
- Anti-virus (1)
- REST (1)
- Profiling (1)
- misc (39)
- NetOA (12)
- rant (6)
- anime (5)
- Links (12)
- CLR (7)
- GC (1)
- OpenJDK (2)
- JVM (4)
- KVM (0)
- Rhino (1)
- LINQ (2)
- JScript (0)
- Nashorn (0)
- Dalvik (1)
- DTrace (0)
- LLVM (0)
- MSIL (0)
最新评论
-
mldxs:
虽然很多还是看不懂,写的很好!
虚拟机随谈(一):解释器,树遍历解释器,基于栈与基于寄存器,大杂烩 -
HanyuKing:
Java的多维数组 -
funnyone:
Java 8的default method与method resolution -
ljs_nogard:
Xamarin workbook - .Net Core 中不 ...
LINQ的恶搞…… -
txm119161336:
allocatestlye1 顺序为 // Fields o ...
最近做的两次Java/JVM分享的概要
在Java中处理JSON格式的数据时,Google Gson是个不错的选择,用起来挺方便的,也有一定灵活性。我现在工作中在参与的两个项目里都有用它。不过它在处理Date格式时有个小陷阱,在不同环境中部署时可能会遇到问题。
Gson默认处理Date对象的序列化/反序列化是通过一个SimpleDateFormat对象来实现的,通过下面的代码去获取实例:
在不同的locale环境中,这样获取到的SimpleDateFormat的模式字符串会不一样。
例如说,在我的开发机是Windows XP SP3,zh_CN.GBK,模式字符串是:
而在我们的一台测试服务器上,RHEL 5.4,en_US.UTF-8,模式字符串则是:
这就使得同样的Date对象通过Gson来序列化为JSON后内容不同。例如说要序列化的日期是2010-08-19 16:13:57,那么在我的开发机上得到的是:
而在那台测试服务器上则是:
这就……郁闷了。在一边序列化的内容在另一边会反序列化失败。
为了避免使用Gson时遇到locale影响Date格式的问题,使用GsonBuilder来创建Gson对象,在创建过程中调用GsonBuilder.setDateFormat(String)指定一个固定的格式即可。例如:
effective javal里面讲过用这个来解决构造函数过长的问题
嗯,也不坏。像MapMaker之类的用起来相当爽
Gson默认处理Date对象的序列化/反序列化是通过一个SimpleDateFormat对象来实现的,通过下面的代码去获取实例:
DateFormat.getDateTimeInstance()
在不同的locale环境中,这样获取到的SimpleDateFormat的模式字符串会不一样。
例如说,在我的开发机是Windows XP SP3,zh_CN.GBK,模式字符串是:
"yyyy-M-d H:mm:ss"
而在我们的一台测试服务器上,RHEL 5.4,en_US.UTF-8,模式字符串则是:
"MMM d, yyyy h:mm:ss a"
这就使得同样的Date对象通过Gson来序列化为JSON后内容不同。例如说要序列化的日期是2010-08-19 16:13:57,那么在我的开发机上得到的是:
"2010-8-19 16:13:57"
而在那台测试服务器上则是:
"Aug 19, 2010 4:13:57 PM"
这就……郁闷了。在一边序列化的内容在另一边会反序列化失败。
为了避免使用Gson时遇到locale影响Date格式的问题,使用GsonBuilder来创建Gson对象,在创建过程中调用GsonBuilder.setDateFormat(String)指定一个固定的格式即可。例如:
Gson gson = new GsonBuilder() .setDateFormat("yyyy-MM-dd HH:mm:ss") .create();
评论
5 楼
yao88611852
2017-04-21
beneo 写道
发现google的java项目灰常灰长很喜欢builder出对象出来。。。
effective javal里面讲过用这个来解决构造函数过长的问题
4 楼
mywill
2015-09-25
感谢分享
3 楼
wenshao
2011-07-23
gson的g不是google的缩写,是龟速的缩写!
2 楼
RednaxelaFX
2010-10-20
beneo 写道
发现google的java项目灰常灰长很喜欢builder出对象出来。。。
嗯,也不坏。像MapMaker之类的用起来相当爽
1 楼
beneo
2010-10-20
发现google的java项目灰常灰长很喜欢builder出对象出来。。。
发表评论
-
The Prehistory of Java, HotSpot and Train
2014-06-02 08:18 0http://cs.gmu.edu/cne/itcore/vi ... -
MSJVM and Sun 1.0.x/1.1.x
2014-05-20 18:50 0当年的survey paper: http://www.sym ... -
Sun JDK1.4.2_28有TieredCompilation
2014-05-12 08:48 0原来以前Sun的JDK 1.4.2 update 28就已经有 ... -
IBM JVM notes (2014 ver)
2014-05-11 07:16 0Sovereign JIT http://publib.bou ... -
class data sharing by Apple
2014-03-28 05:17 0class data sharing is implement ... -
Java 8与静态工具类
2014-03-19 08:43 16273以前要在Java里实现所谓“静态工具类”(static uti ... -
Java 8的default method与method resolution
2014-03-19 02:23 10450先看看下面这个代码例子, interface IFoo { ... -
HotSpot Server VM与Server Class Machine
2014-02-18 13:21 0HotSpot VM历来有Client VM与Server V ... -
Java 8的lambda表达式在OpenJDK8中的实现
2014-02-04 12:08 0三月份JDK8就要发布首发了,现在JDK8 release c ... -
GC stack map与deopt stack map的异同
2014-01-08 09:56 0两者之间不并存在包含关系。它们有交集,但也各自有特别的地方。 ... -
HotSpot Server Compiler与data-flow analysis
2014-01-07 17:41 0http://en.wikipedia.org/wiki/Da ... -
字符串的一般封装方式的内存布局 (1): 元数据与字符串内容,整体还是分离?
2013-11-07 17:44 22389(Disclaimer:未经许可请 ... -
字符串的一般封装方式的内存布局
2013-11-01 12:55 0(Disclaimer:未经许可请 ... -
关于string,内存布局,C++ std::string,CoW
2013-10-30 20:45 0(Disclaimer:未经许可请 ... -
对C语义的for循环的基本代码生成模式
2013-10-19 23:12 21871之前有同学在做龙书(第二版)题目,做到8.4的练习,跟我对答案 ... -
Java的instanceof是如何实现的
2013-09-22 16:57 0Java语言规范,Java SE 7版 http://docs ... -
oop、klass、handle的关系
2013-07-30 17:34 0oopDesc及其子类的实例 oop : oopDesc* ... -
Nashorn各种笔记
2013-07-15 17:03 0http://bits.netbeans.org/netbea ... -
《深入理解Java虚拟机(第二版)》书评
2013-07-08 19:19 0值得推荐的中文Java虚拟机入门书 感谢作者赠与的样书,以下 ... -
豆列:从表到里学习JVM实现
2013-06-13 14:13 48358刚写了个学习JVM用的豆列跟大家分享。 豆列地址:http: ...
相关推荐
### gson使用详解 #### 一、简介 Google的Gson库是用于实现Java对象与JSON数据之间相互转换的强大工具。相较于其他同类库如org.json和json-lib,Gson提供了更为简洁且灵活的方法来处理复杂的对象结构,特别是对于...
本文将深入探讨如何封装一个Gson解析工具类,以优雅地处理JSON数据,尤其是避免在解析过程中遇到`String`为`null`时产生的错误。 首先,我们需要引入Gson库。如果你的项目是Maven项目,可以在pom.xml文件中添加以下...
通过这种方式,Gson 在遇到 `CustomDate` 类型的对象时,就会使用我们自定义的序列化和反序列化逻辑。 在处理复杂对象时,比如包含嵌套的对象或者数组,Gson 也能优雅地处理。例如,如果我们有以下的 `Family` 类:...
本篇文章将深入探讨如何在使用Gson时进行自定义的序列化和反序列化,以及在遇到后端返回的数据类型与预期不符时的处理策略。 ### Gson自定义序列化 自定义序列化主要是为了在转换Java对象为JSON时,根据特定需求...
在这个`Gson TypeAdapter`使用技巧的例子中,我们将深入探讨如何利用TypeAdapter来优化数据处理,包括数据免判空、解析后校验以及预处理等关键环节。这些技巧对于处理机器学习中的数据预处理尤其重要。 首先,让...
现在,我们可以在应用中使用`GsonRequest`发送网络请求,并指定需要解析的数据类型。以下是一个简单的示例: ```java String url = "https://api.example.com/data"; GsonRequest<MyDataModel> request = new ...
在处理JSON时,尤其是在涉及到日期(Date)对象时,可能会遇到一些转换问题。本示例“json格式转换demo”将解决这些常见的问题。 首先,让我们深入了解一下JSON的基本结构。JSON基于JavaScript的一个子集,主要由...
Java在处理JSON数据时,经常会遇到时间序列化的问题,特别是在与.NET平台交互时,需要将日期格式转换为特定的格式,如"/Date(1296576000000+0800)/"。这个问题可以通过使用FastJSON、Gson和Jackson这三种流行的JSON...
本文将深入探讨如何使用Java解析JSON文件,包括所需的库、时间戳转换和文件读写操作,以及ArrayList类中可能遇到的问题。 首先,解析JSON文件,我们通常会用到两个流行的Java JSON库:Jackson和Gson。Jackson库提供...
- **概念介绍**: 当从文件中读取JSON时,可能会遇到某些字段为空的情况。Gson提供了便捷的方法来处理这种情况。 - **示例代码**: ```java FileReader reader = new FileReader("data.json"); Gson gson = new ...
在使用EasyUI的datagrid控件时,我们常常会遇到日期数据在前端显示为`object`类型的问题,这主要是因为服务器返回的日期数据没有被正确格式化。在标题和描述中提到的解决方案,主要涉及到以下几个关键点: 1. **...
通过阅读这篇博客,开发者可以更好地理解如何在Java中使用JSON Lib处理日期和时间,从而提高JSON数据操作的效率和准确性。 在实际项目中,除了JSON Lib,还有其他流行的JSON处理库,如Jackson和Gson,它们也提供了...
在给定的压缩包文件中,可能包含了以上所述的示例代码,用于演示如何在Java中使用JSON库进行对象转换,以及如何处理可能出现的问题。通过这些实例,开发者可以更深入地理解JSON操作,并能有效地应用到实际项目中。
在跨平台开发中,经常会遇到将一种编程语言的代码转换为另一种编程语言的情况。本话题主要探讨如何将C#中的`DateTime`类转换为Java代码。`DateTime`是C#中用于表示日期和时间的内置类型,而在Java中,相应的类型是`...
在处理JSON数据与Java对象之间的转换时,常常会遇到日期格式不匹配的问题。JSON标准并未规定日期的特定格式,导致在不同的系统间进行数据交换时可能会出现解析异常。本问题中,开发人员自定义了一个名为`JsonUtil`的...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于Web服务和应用程序之间的数据传输。...同时,为了确保程序的稳定运行,理解并掌握这些库的使用方法和常见问题的解决策略是至关重要的。
- **解释**: 介绍了如何使用Apache HttpClient来处理与服务器之间通信过程中遇到的无效SSL证书问题。这通常涉及到信任管理器的配置和SSL上下文的设置。 ##### 食谱20: Java中日期时间的转换 - **知识点**: 日期时间...
- 根据消息的发送时间戳,使用`Date`和`SimpleDateFormat`格式化时间字符串。 - 为了优化用户体验,可以使用`DiffUtil`计算消息之间的差异,只显示非连续的时间戳。 9. **UI动画**: - 添加消息发送后的滑动动画...
在实体类中定义时间字段时,可以使用`@JsonFormat`注解来指定日期格式化规则。 **示例**: ```java @Data public class User { @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date...
在Java中,我们常常会遇到需要将数据转化为JSON格式进行传输的情况,例如将Java对象序列化为JSON字符串,或将接收到的JSON字符串反序列化为Java对象。这个JSON jar包提供了一整套工具来实现这些功能。 1. **JSON...