gpt4 book ai didi

java - 将 JSONArray 的内容映射到给定类的 Java 函数?

转载 作者:行者123 更新时间:2023-11-30 02:00:30 25 4
gpt4 key购买 nike

使用 Java 8。我想创建一个通用函数,可用于映射 JSONArray 的内容反对某个类(Class)。该函数的输入将是 JSONArray和一个类对象,该对象具有一个构造函数,该构造函数将把个体 JSONObject位于 JSONArray 内到适当的 POJO 中。

我想要这样的东西:

public static List<T> getObjectsFromJSONArray(Class T, JSONArray input) {
return IntStream.range(0, input.length())
.mapToObj(index -> (JSONObject)input.get(index))
.collect(Collectors.toList())
.forEach(jsonObj -> new T(jsonObj));
}

这不能编译。也许因为我是Java新手,不习惯,所以我想将其设为通用函数。

一种可能的替代解决方案是创建一个类 U<T> ,它扩展了 List 并在所有意图和目的上充当 List<T>U 的构造函数然后将获取整个 JSONArray 然后我的代码可以使用指定的类型。我以前见过这种实现方式,但对我来说似乎很麻烦。如果有新类(class)请告诉我 U确实是在 Java 中执行此操作的“最佳实践”方法。

最佳答案

像这样的东西怎么样

   public static <T> List<T> getObjectsFromJSONArray(Function<JSONObject, T> factory, JSONArray input) {
return IntStream.range(0, input.length())
.mapToObj(index -> factory.apply((JSONObject)input.get(index)))
.collect(Collectors.toList());
}

然后你就可以像这样使用它

getObjectsFromJSONArray(YourObject::new, jsonarray)

关于java - 将 JSONArray 的内容映射到给定类的 Java 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53015740/

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