开发者社区> 问答> 正文

有一个自定义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 188 0
1 条回答
写回答
取消 提交回答
  • 问题已修复,请用新版本 https://github.com/alibaba/fastjson2/releases/tag/2.0.25

    原回答者GitHub用户wenshao

    2023-04-21 13:44:19
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载