alibaba / alibaba/fastjson2

[BUG]ObjectWriter<byte[]>使用@JSONField(serializeUsing = HexSerializer.class)不成效

Open
#3,308 1 comment 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

### 问题描述
*简要描述您碰到的问题。*

HexSerializer implements ObjectWriter 不生效
@JSONField(serializeUsing = HexSerializer.class)不成效
protected byte[] body;

序列化 HexSerializer 不生效,换成string就是

HexSerializer implements ObjectWriter 生效
@JSONField(serializeUsing = HexSerializer.class)
protected String key;

### 环境信息
*请填写以下信息:*

- OS信息: [e.g.:CentOS 8.4.2105 4Core 3.10GHz 16 GB]
- JDK信息: [e.g.:Openjdk 17]
- 版本信息:[e.g.:Fastjson2 2.0.54]

### 期待的正确结果
*对您期望发生的结果进行清晰简洁的描述。*

```
public class HexSerializer implements ObjectWriter {
@Override
public void write(JSONWriter jsonWriter, Object object, Object fieldName, Type fieldType, long features) {
jsonWriter.writeString(RemotingHelper.bytes2hex02((byte[]) object));
}

}

JSONObject.toJSONString(packet);

```
### 相关日志输出
*请复制并粘贴任何相关的日志输出。*

#### 附加信息
*如果你还有其他需要提供的信息,可以在这里填写(可以提供截图、视频等)。*

Contributor guide

Open the contributing guide

Research direction

Start from the HexSerializer implementation and the JSONObject.toJSONString(packet) call in the report, then compare the byte[] ObjectWriter case with the working String case. Reproduce the annotation behavior and confirm that @JSONField(serializeUsing = HexSerializer.class) invokes the byte[] serializer and produces the expected hexadecimal string.

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
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.