簡體   English   中英

在Java中將ArrayList轉換為JSON對象

[英]Convert ArrayList to JSON Object In Java

菜鳥Java問題在這里:我有一個ArrayList值,用於存儲用戶對象的屬性,如下所示:

{"users":["Bob", 35, "230 Elm Street", "bob@website.com"]}

我的用戶對象:

public class User{
    private String name;
    private int age;
    private String address;
    private String email;
    //getters & setters
}

我需要將每個值映射到它們各自的屬性,以便可以返回適當的Key / Value JSON對象,如下所示:

["name": "Bob", "age": 35, "address": "230 Elm Street", "email": "bob@website.com"]

我對如何解決這個問題有些困惑; 在遍歷列表時是否需要使用Map手動設置每個鍵,例如...

for(User user : list){
    HashMap myMap = new HashMap();
    myMap.put("name", user.getName());
    myMap.setAge("age", user.getAge());
    //etc...

}
//Convert Map to JSON
return new JSONObject(myMap);

還是比這更簡單? 謝謝您的幫助!

最好的選擇是學習Jackson序列化API。 在幕后,Spring MVC使用Jackson。 您最好在Google上搜索Jackson教程,然后在https://github.com/FasterXML/jackson上查看官方文檔。

請注意,如果您想調整JSON格式,那么可以將Jackson批注添加到Java對象中。

首先,對於User對象列表,JSON需要不同。 當前的表示形式如下

{"users":[{"name": "Bob", "age": 35, "address": "230 Elm Street", "email": "bob@website.com"},{"name": "Bob1", "age": 40, "address": "2301 Elm Street", "email": "bob1@website.com"}]}

要將這個json與List<User>映射,我們可以使用Jackson庫中提供的ObjectMapper實現。

 ObjectMapper mapper = new ObjectMapper();
 List<User> list2 = mapper.readValue(jsonString, TypeFactory.collectionType(List.class, User.class));

閱讀此鏈接以獲取更多幫助

您可以使用Gson provided by google它將自動為您完成。 還有其他各種解析器,例如jackson,ig-parser(通過instagram)。 這是使用gson的示例。

public class DataObject {

    private int data1 = 100;
    private String data2 = "hello";
    private List<String> list = new ArrayList<String>() {
      {
        add("String 1");
        add("String 2");
        add("String 3");
      }
    };

    //getter and setter methods

    @Override
    public String toString() {
       return "DataObject [data1=" + data1 + ", data2=" + data2 + ", list="
        + list + "]";
    }

}

轉換為json

public class GsonExample {
    public static void main(String[] args) {

    DataObject obj = new DataObject();
    Gson gson = new Gson();

    // convert java object to JSON format,
    // and returned as JSON formatted string
    String json = gson.toJson(obj); 
    System.out.println(json);

    }
}

如果您使用Spring-MVC,則無需了解JSON,@ RestController對JSON是透明的

@RestController
@RequestMapping("user")
public class UserController {
    @RequestMapping
    public User getUser() {
     User user = new User();
     user.setName(...);
     return user;
    }
}

只包含在Maven中:

<dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>${jackson.version}</version>
</dependency>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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