[英]How to get a list of specific fields values from objects stored in a list?
[英]How to get a list of objects contained only specific fields in Java?
我有一個來自Person類型的對象的列表:
String id
String name
String address
String workPlace
我想創建一個新的列表,其中包含Person對象,但僅包含2個字段:id和name。 我想稍后從該列表創建一個json,如下所示:
[
{
"id": "767384",
"name": "Bob",
},
{
"id": "202330",
"name": "Alice",
}
]
我該怎么做? 謝謝!
該庫是com.google.gson.JsonArray和org.json.JSONObject
首先要做的是創建一個JSON數組。
JsonArray jsonPersonList = new JsonArray();
然后創建一個循環(假設有一個名為personList的列表)。
for(Person person : personList)
然后在循環內創建一個新的json對象。
JsonObject personJson = new JsonObject();
將person屬性放在json對象中。
personJson.addProperty("id" , person.getId()); //Assuming getters,setters
personJson.addProperty("name" , person.getName());
在循環的最后,將personJson添加到JsonPersonList。
jsonPersonList.add(personJson);
循環之后,您將擁有一個與所需人員一起的json列表。
示例方法:
public JsonArray getPersonJsonList(ArrayList<Person> personList){
JsonArray jsonPersonList = new JsonArray();
for(Person person : personList){
JsonObject personJson = new JsonObject();
personJson.addProperty("id" , person.getId());
personJson.addProperty("name" , person.getName());
jsonPersonList.add(personJson);
}
return jsonPersonList;
}
您還可以像這樣創建新的結果對象或DTO。
public class ResultPerson {
String id;
String name;
public ResultPerson(String id, String name) {
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
然后您可以使用java流將“人”列表映射到新列表,並通過使用ObjectMapper將其轉換為json
ObjectMapper objectMapper = new ObjectMapper();
List<ResultPerson> results = persons.stream().map(person -> new ResultPerson(person.getId(), person.getName()))
.collect(Collectors.toList());
ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
try {
String json = ow.writeValueAsString(results);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
您需要添加jackson-databind作為依賴項:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.4</version>
</dependency>
如果您不使用Maven,則可以下載jar並將其添加到類路徑中
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.