开发者社区 问答 正文

有一个自定义ObjectReader实现中获取目标类型的问题,求指教

自定义ObjectReader实现中获取目标类型的问题

将根级的json文本转换为指定对象时,ObjectReader类的readObject(JSONReader reader, Type type, Object name, long features)方法第二个参数为空,请问这种情况如何获取到Type。

@Test
void test01() {
	String json1 = "{\"inner\":{\"id\":\"1\"}}";
	Wrapper wrapper = JSON.parseObject(json1, Wrapper.class); // Type参数有值
	System.out.println(wrapper);

	String json2 = "{\"id\":\"1\"}";
	Inner inner = JSON.parseObject(json2, Inner.class); // Type为空
	System.out.println(inner);
}

public static class InnerReader implements ObjectReader<Inner> {

	@Override
	public Inner readObject(JSONReader reader, Type type, Object name, long features) {
		System.out.println("type:" + type);
		if (type == null){
			return null;
		}
		Map<String, Object> map = reader.readObject();
		Inner inner = new Inner();
		inner.setId(Objects.toString(map.get("id")));
		return inner;
	}
}

@Data
public static class Wrapper {
	private Inner inner;
}

@Data
@JSONType(deserializer = InnerReader.class)
public static class Inner {
	private String id;
}

原提问者GitHub用户blizzardy

展开
收起
白夜行fighting 2023-04-21 10:53:22 197 发布于北京 分享
分享
版权
举报
1 条回答
写回答
取消 提交回答
  • 问题已修复,请用新版本 https://github.com/alibaba/fastjson2/releases/tag/2.0.25

    原回答者GitHub用户wenshao

    2023-04-21 13:44:19 举报
    赞同 评论

    评论

    全部评论 (0)

    登录后可评论
问答分类:
问答地址:
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等