簡體   English   中英

如何將對象列表轉換為JSON對象?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM