[英]Converting Dynamic ArrayList to Json
我想將數組列表轉換為特定格式的json字符串。 我將所有用戶電子郵件發送到數組列表中,並希望將其轉換為以下JSON格式。
[
{"email":"abc@gmail.com"},
{"email":"xyz@gmail.com"}
]
我的控制器動作是
public static Result apiCustomers(){
List<Customer> customerList = Model.coll(Customer.class).find().toArray();
List<String> emails = new ArrayList<String>();
for(Customer c : customerList){
emails.add(c.email);
}
//ObjectNode result = Json.newObject();
//result.put("emails", Json.toJson(emails));
return ok();
}
如何將電子郵件列表轉換為上述json格式?
提前致謝
為什么要使用另一個JSON ser / des lib? Play內置了一個(傑克遜周圍的包裝器-速度非常快)。
從您的代碼開始:
public static Result apiCustomers(){
List<Customer> customerList = Model.coll(Customer.class).find().toArray();
List<String> emails = new ArrayList<String>();
for(Customer c : customerList){
emails.add(c.email);
}
return ok(Json.toJson(emails));
}
這使用一些默認值,但應該足夠了。
或手動:
public static Result apiCustomers(){
ArrayNode arrayNode = new ArrayNode(JsonNodeFactory.instance);
List<Customer> customerList = Model.coll(Customer.class).find().toArray();
for(Customer c : customerList){
ObjectNode mail = Json.newObject();
mail.put("email", c.email);
arrayNode.add(mail);
}
return ok(arrayNode);
}
不需要Gson。
您可以使用以下庫: http : //code.google.com/p/google-gson/
關於此的非常簡單的教程: http : //www.mkyong.com/java/how-do-convert-java-object-to-from-json-format-gson-api/
或者,您可以將自定義的toJson方法寫入您的類或util Json(沒什么大不了的)
在你的情況下應該是這樣的(我沒有測試):
public String toJson(List<String> emails) {
StringBuilder result = new StringBuilder();
result.append("[");
result.append("\n");
for (String s : emails) {
result.append("{");
result.append("\"email\":");
result.append("\"");
result.append(s);
result.append("\"");
result.append("}");
result.append(",");
result.append("\n");
}
result.append("]");
return result.toString();
}
受益於Java 8(我懷疑是Jackson的較新版本):
private static final ObjectMapper mapper = new ObjectMapper();
...
List<Customer> customerList = Model.coll(Customer.class).find().toArray();
ArrayNode emails = mapper.createArrayNode();
customerList.forEach(c -> emails.add(c.email));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.