alibaba / alibaba/fastjson2

[FEATURE]ObjectDeserializer建议扩展获取归属bean info信息

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

Description

### 请描述您的需求或者改进建议
*对您想要需求或建议的清晰简洁的描述。*
期望在OffsetTimeJsonCodec的deserialze方法中获取到对应的bean info信息,示例代码如下:

```
//1、在vo中设置自定义反序列化对象
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TestVo implements Serializable {

@JSONField(serializeUsing = OffsetTimeJsonCodec.class, deserializeUsing = OffsetTimeJsonCodec.class)
private Date testDate;

}
//2、OffsetTimeJsonCodec
@Slf4j
public class OffsetTimeJsonCodec implements ObjectSerializer, ObjectDeserializer {
@Override
public long getFeatures() {
return ObjectSerializer.super.getFeatures();
}

@Override
public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {
//业务处理,此处忽略.....
}

@Override
public T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {
//TODO,此处获取fieldName对应的bean info信息,如当前示例为:TestVo
return null;
}

}
//3、调用示例:
public class OffsetTimeJsonCodecTest {
@Test
public void offsetTimeJsonCodecTest() {
TestVo testVo = new TestVo();
testVo.setTestDate(new Date());
String jsonStr = JSON.toJSONString(testVo);
TestVo testVo1 = JSON.parseObject(jsonStr, TestVo.class);
}
}
```

### 请描述你建议的实现方案
*对您想要需求或建议的实现方案的详细描述。*

![Snipaste_2023-09-27_15-30-52](https://github.com/alibaba/fastjson2/assets/22343834/7960624c-e40b-4dfe-a80c-ba198e4c0790)

### 描述您考虑过的替代方案
*对您考虑过的任何替代解决方案或功能的描述。*

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

Contributor guide

Open the contributing guide

Research direction

Start with ObjectDeserializer and DefaultJSONParser, then trace how the @JSONField deserializeUsing handler is invoked for TestVo.testDate. Review OffsetTimeJsonCodec.deserialze and the OffsetTimeJsonCodecTest example to determine the expected bean-info access and how the test should demonstrate it. Done means the custom deserializer can obtain the owning TestVo bean information during parsing.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
backend-api-design
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 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.