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