我有一个对象的 HashSet,我试图将其放在 JSON 对象上。
HashSet<Users> users;
...
JSONObject j = new JSONObject();
j.put("users", users);
但是,
System.out.println(j.toString(2));
给我
{"users": [
{},
{}
]}
当 HashSet 中有 2 个条目时。 Users 对象的非空值不存在。
将声明类型的 List 转换为 JSONObject 是否还有更多操作?
我正在使用 org.json.* 中的 JSON。
Users 类如下:
public class Users {
byte[] pic;
String firstName;
String lastName;
String address;
}
我看到 HashSet“users”中的条目在其他方面都很好。
TIA。
最佳答案
问题出在您的 Users
类上。您似乎期望它只获取字段,但我不相信 JSONObject
会这样做 - 相反,它会找到类似 bean 的 getter。
如果您尝试将 Users
类的单个实例转换为 JSONObject
,您会得到完全相同的结果 ({ }
) - 此问题与尝试转换多个实例无关。 (从诊断问题中吸取教训是值得的 - 始终尝试缩小范围。)
一旦您创建了一个具有适当 getter 的类,它就可以正常工作。示例代码:
public final class User {
private final String firstName;
private final String lastName;
public User(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
}
import org.json.*;
import java.util.*;
class Test {
public static void main(String [] args) throws Exception {
User user = new User("Jon", "Skeet");
JSONObject single = new JSONObject(user);
System.out.println("Single user: " + single);
Set<User> users = new HashSet<>();
users.add(new User("Jon", "Skeet"));
users.add(new User("Holly", "Skeet"));
JSONObject multiple = new JSONObject();
multiple.put("users", users);
System.out.println("Multiple users: " + multiple);
}
}
输出:
Single user: {"lastName":"Skeet","firstName":"Jon"}
Multiple users: {"users":[{"lastName":"Skeet","firstName":"Holly"},{"lastName":"Skeet","firstName":"Jon"}]}
关于java - 如何将对象列表转换为 JSON 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23730768/