[英]How to convert a list of objects into a JSON object using a property as key?
[英]How to convert a list of objects to a JSON object?
我有一個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中的條目“用戶”都很好。
TIA。
我使用下面的代碼得到了正確的結果。 如果你做的不同,你能突出強調嗎? 也許我可以做出類似的改變並嘗試一次。
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));
}
使用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);
問題出在您的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"}]}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.