jsonobject转实体类jihe
时间: 2023-06-23 11:47:03 浏览: 163
如果我们需要将一个JSONArray转换为一个Java集合类,例如List,我们可以使用Java中的反射机制和泛型。
假设我们有以下JSON字符串:
```
[
{
"name": "John Doe",
"age": 30,
"email": "johndoe@example.com"
},
{
"name": "Jane Doe",
"age": 28,
"email": "janedoe@example.com"
}
]
```
我们可以创建一个Java实体类User来表示这个JSON字符串中的每个对象:
```
public class User {
private String name;
private int age;
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
```
然后,我们可以使用反射机制和泛型将JSONArray转换为List<User>:
```
import org.json.JSONArray;
import org.json.JSONObject;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) throws Exception {
String jsonString = "[{\"name\": \"John Doe\", \"age\": 30, \"email\": \"johndoe@example.com\"}, {\"name\": \"Jane Doe\", \"age\": 28, \"email\": \"janedoe@example.com\"}]";
JSONArray jsonArray = new JSONArray(jsonString);
List<User> userList = new ArrayList<>();
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
User user = new User();
Field[] fields = User.class.getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
if (jsonObject.has(field.getName())) {
Object value = jsonObject.get(field.getName());
field.set(user, value);
}
}
userList.add(user);
}
for (User user : userList) {
System.out.println(user.getName());
System.out.println(user.getAge());
System.out.println(user.getEmail());
}
}
}
```
这个程序将输出:
```
John Doe
30
johndoe@example.com
Jane Doe
28
janedoe@example.com
```
注意,我们使用反射机制将User类的字段设置为相应的JSON属性值。这个过程需要通过调用Field类的setAccessible(true)方法来访问私有字段。另外,我们使用了泛型来创建一个List<User>对象,以便存储从JSONArray转换而来的User对象。
阅读全文