gpt4 book ai didi

java - JSON如何反序列化数组?

转载 作者:太空宇宙 更新时间:2023-11-04 11:27:10 44 4
gpt4 key购买 nike

我正在使用fasterxml.jackson。我对readValue()感到困惑。这是我的问题。

我知道 Jackson 以两种不同的方式反序列化普通的 JavaBean 和 Collection。对于JavaBean,我们可以传递MyBean.classnew TypeReference<MyBean>readValue() 。对于 Collections,我们必须通过 new TypeReference<List<MyBean>> 。那是因为TypeReference保存被 Collection 删除的类型。我对吗? :)

现在我很困惑。如果MyBean包含一个列表,那么我仍然可以通过MyBean.class它有效。 jackson 是怎么做到的?

public class MyBean {
String str;
List<String> strList;
}

最佳答案

您正在通过MyBean.class作为 readValue() 的第二个参数 jackson 可以通过反射(reflection)从中得到类型。我猜 jackson 会做这样的事情:

MyBean.class.getDeclaredField("strList").getGenericType();

这将导致 java.util.List<java.lang.String> 类型.

请注意,您有一个非通用 class MyBean包含List<String> 。例如,如果您有:

class MyGenBean<T> {
List<T> list;
}

然后

MyGenBean.class.getDeclaredField("list").getGenericType();

将返回java.util.List<T>你需要一个TypeReference .

关于java - JSON如何反序列化数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44226981/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com