将JSONArray转换为通用List<T>的方法可以通过以下步骤实现:
toArray()
方法来实现这一步骤。Class.forName("包名.类名")
来获取。newInstance()
方法创建目标类型T的实例。getMethod()
方法获取目标类型T的setter方法。下面是一个示例代码,演示了如何将JSONArray转换为通用List<T>:
import org.json.JSONArray;
import org.json.JSONObject;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
public class JSONArrayToListConverter<T> {
public List<T> convert(JSONArray jsonArray, Class<T> targetType) throws Exception {
List<T> resultList = new ArrayList<>();
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
T targetObject = targetType.newInstance();
for (String key : jsonObject.keySet()) {
Object value = jsonObject.get(key);
Method setter = getSetter(targetType, key);
setter.invoke(targetObject, value);
}
resultList.add(targetObject);
}
return resultList;
}
private Method getSetter(Class<?> targetType, String fieldName) throws Exception {
String setterName = "set" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);
Method[] methods = targetType.getMethods();
for (Method method : methods) {
if (method.getName().equals(setterName)) {
return method;
}
}
throw new NoSuchMethodException("Setter method not found for field: " + fieldName);
}
}
使用示例:
JSONArray jsonArray = new JSONArray("[{\"name\":\"Alice\",\"age\":25},{\"name\":\"Bob\",\"age\":30}]");
JSONArrayToListConverter<Person> converter = new JSONArrayToListConverter<>();
List<Person> personList = converter.convert(jsonArray, Person.class);
for (Person person : personList) {
System.out.println("Name: " + person.getName() + ", Age: " + person.getAge());
}
上述示例中,假设存在一个名为Person的类,具有name和age属性以及对应的getter和setter方法。
请注意,这只是一个简单的示例,实际应用中可能需要根据具体的数据结构和业务逻辑进行适当的修改和调整。
领取专属 10元无门槛券
手把手带您无忧上云