利用泛型,同一个json解析出不一样的集合对象
时间: 2024-01-15 08:04:50 浏览: 71
可以使用泛型来解决这个问题。通过使用泛型,可以定义一个通用的 JSON 解析方法,该方法可以根据不同的泛型参数类型解析出不同的集合对象。
以下是一个示例代码:
```java
public class JsonUtils {
public static <T> List<T> parseJsonToList(String json, Class<T> clazz) {
List<T> list = new ArrayList<>();
try {
JSONArray jsonArray = new JSONArray(json);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
T item = new Gson().fromJson(jsonObject.toString(), clazz);
list.add(item);
}
} catch (JSONException e) {
e.printStackTrace();
}
return list;
}
}
// 调用示例
String json = "[{\"name\":\"Tom\",\"age\":18},{\"name\":\"Jack\",\"age\":20}]";
List<Person> personList = JsonUtils.parseJsonToList(json, Person.class);
List<Book> bookList = JsonUtils.parseJsonToList(json, Book.class);
```
在上面的示例中,`parseJsonToList` 方法接受两个参数:要解析的 JSON 字符串和泛型参数类型 `clazz`。通过 `clazz` 参数,我们可以在运行时动态地获取要解析的对象类型。在方法中,我们使用 Gson 库将 JSON 对象转换为目标类型的对象,并将其添加到列表中返回。
具体来说,当我们传入 `Person.class` 时,`parseJsonToList` 方法将会解析出 `Person` 类型的对象,并返回一个 `List<Person>` 类型的列表;当我们传入 `Book.class` 时,`parseJsonToList` 方法将会解析出 `Book` 类型的对象,并返回一个 `List<Book>` 类型的列表。
阅读全文