alibaba / alibaba/fastjson2

[BUG] DateTimeParseException at JSON.parseObject

Open
#2,754 0 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
Java
Stars
4.4k
Forks
613
Avg merge
1d 22h
Merged PRs (30d)
6

Description

### 问题描述

以下代码 fastjson1.x 无问题, fastjson2 在JSON.parseObject报错

### 环境信息

- OS信息: [MacOS 12.7.4 M1 Pro 16 GB]
- JDK信息: [Openjdk 17.0.6]
- 版本信息:[Fastjson2 2.0.51]

### 重现步骤

```java

import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson2.JSON;
import org.junit.jupiter.api.Test;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import static org.junit.jupiter.api.Assertions.assertEquals;

public class Issue1711_534 {

@Test
public void testExtraParseMethod() {
Map map = new HashMap();
map.put("now", "00000000");
// Hutool BeanUtil
final MyBean bean = BeanUtil.mapToBean(map, MyBean.class, false, null);

byte[] jsonBytes = JSON.toJSONBytes(bean);
MyBean parsedBean = JSON.parseObject(jsonBytes, MyBean.class);

assertEquals(bean.getNow(), parsedBean.getNow());
}

public static class MyBean {
private Date now;

public Date getNow() {
return now;
}

public void setNow(Date now) {
this.now = now;
}

@Override
public String toString() {
return "MyBean{" +
"now=" + now +
'}';
}
}
}
```

### 相关日志输出
java.time.format.DateTimeParseException: -0001-11-28T00:05:43[Asia/Shanghai]
at com.alibaba.fastjson2.util.DateUtils.parseZonedDateTime(DateUtils.java:6232)
at com.alibaba.fastjson2.JSONReader.readMillisFromString(JSONReader.java:1609)
at com.alibaba.fastjson2.JSONReader.readDate(JSONReader.java:1410)
at com.alibaba.fastjson2.reader.ORG_1_1_MyBean.readObject(Unknown Source)
at com.alibaba.fastjson2.JSON.parseObject(JSON.java:1503)

Contributor guide

Open the contributing guide

Research direction

Start by running the provided JUnit reproducer with Java 17 and fastjson2 2.0.51. Inspect the stack-traced paths in DateUtils.parseZonedDateTime, JSONReader.readMillisFromString, and JSONReader.readDate; done means the MyBean round trip completes without DateTimeParseException and preserves bean.getNow().

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
backend
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.