利用泛型作为形参,同一个json解析出不一样的集合对象
时间: 2024-01-15 14:04:51 浏览: 72
Redis缓存,泛型集合与json字符串的相互转换实例
可以使用Java中的泛型来实现,具体的步骤如下:
1.定义一个泛型方法,方法参数为Json字符串和Class类型,返回值为泛型集合对象。
```java
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 obj = new Gson().fromJson(jsonObject.toString(), clazz);
list.add(obj);
}
} catch (JSONException e) {
e.printStackTrace();
}
return list;
}
```
2.调用该泛型方法,传入Json字符串和Class类型,即可得到不同类型的泛型集合对象。
例如,如果要将以下Json字符串解析为List<User>对象:
```json
[
{"id":1,"name":"张三","age":18},
{"id":2,"name":"李四","age":20},
{"id":3,"name":"王五","age":22}
]
```
可以这样调用:
```java
String json = "[{\"id\":1,\"name\":\"张三\",\"age\":18},{\"id\":2,\"name\":\"李四\",\"age\":20},{\"id\":3,\"name\":\"王五\",\"age\":22}]";
List<User> userList = parseJsonToList(json, User.class);
```
如果要将以下Json字符串解析为List<Book>对象:
```json
[
{"id":1,"name":"Java编程思想","author":"Bruce Eckel","price":68.0},
{"id":2,"name":"Effective Java","author":"Joshua Bloch","price":55.0},
{"id":3,"name":"Java核心技术","author":"Cay S. Horstmann","price":89.0}
]
```
可以这样调用:
```java
String json = "[{\"id\":1,\"name\":\"Java编程思想\",\"author\":\"Bruce Eckel\",\"price\":68.0},{\"id\":2,\"name\":\"Effective Java\",\"author\":\"Joshua Bloch\",\"price\":55.0},{\"id\":3,\"name\":\"Java核心技术\",\"author\":\"Cay S. Horstmann\",\"price\":89.0}]";
List<Book> bookList = parseJsonToList(json, Book.class);
```
阅读全文