我有一个HashSet对象,我试图把它放在一个JSON对象上。
HashSet<Users> users;
...
JSONObject j = new JSONObject();
j.put("users", users);
然而,
System.out.println(j.toString(2));
给了我
{"users": [
{},
{}
]}
当HashSet中有2个条目时。 Users对象的非null值不存在。
还有更多将声明类型的List转换为JSONObject吗?
我在org.json使用JSON。*。
Users类如下:
public class Users {
byte[] pic;
String firstName;
String lastName;
String address;
}
我在HashSet&#34;用户&#34;中看到了这些条目。其他方面都很好。
TIA。
答案 0 :(得分:1)
我使用下面的代码得到了正确的结果。如果你做的不同,你能突出强调吗?也许我可以做出类似的改变并尝试一次。
public static void main(String[] args){
HashSet<String> users = new HashSet<>();
users.add("user1");
users.add("user2");
JSONObject j = new JSONObject();
j.put("users", users);
System.out.println(j.toString(2));
}
输出:
{“users”:[“user2”,“user1”]}
==================================编辑============ =====================
我想我知道问题是什么。请尝试以下代码,如果有效,请告诉我们。
public static void main(String[] args) {
JSONObject o1 = new JSONObject();
o1.put("1", new User("User1"));
JSONObject o2 = new JSONObject();
o2.put("2", new User("User2"));
HashSet<JSONObject> users = new HashSet<>();
users.add(o1);
users.add(o2);
JSONObject j = new JSONObject();
j.put("users", users);
System.out.println(j.toString(2));
}
答案 1 :(得分:1)
使用gson,它更简单。
使用以下代码段:
// create a new Gson object
Gson gson = new Gson();
// convert your set to json
String jsonUsersSet = gson.toJson(users);
// print your generated json
System.out.println("jsonUsersSet: " + jsonUsersSet);
从JSON字符串转换为Java对象:
// Converts JSON string into a set of user object
Type type = new TypeToken<Set<User>>(){}.getType();
Set<User> userSet = gson.fromJson(jsonUsersSet, type);
// print your Set<User>
System.out.println("userSet : " + userSet);
答案 2 :(得分:1)
问题在于您的Users
课程。你似乎期望它只是拿起字段,但我不相信JSONObject
这样做 - 相反,它发现了类似bean的吸气剂。
如果您尝试将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"}]}