我有一个List<Person>
列表。
我想使用Jackson Api将其序列化为JSON以及其他一些属性。
输出应该是这样的:
{
"sEcho": 3,
"iTotalRecords": 10,
"iTotalDisplayRecords": 10,
"aaData": [ <--here's the persons
{
"name": "TestName1",
"status": "ok"
},
{
"name": "TestName2",
"status": "ok"
},
...
]
}
可能非常简单,但无法从Jackson的Api中找到它。 感谢
答案 0 :(得分:3)
我将创建一个名为PersonGroup的新类,其中包含List所需的任何额外字段作为此类的另一个字段 - 对于您给出此字段的示例,将命名为aaData。
这将代表您在这里的结构。如果您认为新类太多,那么您可以创建一个对象的HashMap并将额外的字段存储为您喜欢的任何对象,然后将这些添加到HashMap中,确保键与额外字段的名称匹配并确保你的List也在HashMap中。
反序列化此类或HashMap应返回您提到的输出。
答案 1 :(得分:0)
试试这个。 希望它会有所帮助。
import java.util.ArrayList;
import java.util.List;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
public class JsonSimpleExample {
public static void main(String[] args) {
List<Person> personList = new ArrayList<Person>();
for(int i=0 ;i< 5;i ++) {
Person person = new Person("TestName" + (i+1), "OK");
personList.add(person);
}
JSONObject obj = new JSONObject();
obj.put("sEcho", 3);
obj.put("iTotalRecords", 10);
obj.put("iTotalDisplayRecords", 10);
JSONArray list = new JSONArray();
for (Person person : personList) {
JSONObject innerObj = new JSONObject();
innerObj.put("name",person.getName());
innerObj.put("status",person.getStatus());
list.add(innerObj);
}
obj.put("aaData", list);
System.out.print(obj);
}
}
class Person {
private String name;
private String status;
public Person(String name, String status) {
this.name = name;
this.status = status;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}