gpt4 book ai didi

java - 如何将对象列表转换为 JSON 对象?

转载 作者:行者123 更新时间:2023-11-29 05:23:25 24 4
gpt4 key购买 nike

我有一个 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。

User类如下:

public class Users {
byte[] pic;
String firstName;
String lastName;
String address;
}

我看到哈希集“用户”中的条目在其他方面都很好。

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com