restlet中如何返回json和xml类型数据
所需jar包:org.restlet.jar、org.restlet.ext.json.jar、org.restlet.ext.xml.jar
1.返回json类型数据:
(1).编写学生实体类(Student.java):
public class Student {
private String name;
private String sex;
private int age;
public Student(String name,String sex,int age){
this.name = name;
this.sex = sex;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
(2).编写资源处理类(GetDataResource):
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.restlet.ext.json.JsonRepresentation;
import org.restlet.representation.Representation;
import org.restlet.resource.Get;
import org.restlet.resource.ServerResource;
//定义一个资源
public class GetDataResource extends ServerResource {
/**返回JSON类型数据*/
@Get
private Representation getJsonData() {
List<Student> list = new ArrayList<Student>();
Student stu1 = new Student("曹操","男",50);
Student stu2 = new Student("小乔","女",23);
Student stu3 = new Student("周瑜","男",32);
list.add(stu1);
list.add(stu2);
list.add(stu3);
//把list集合转换为json对象
JSONArray arr = new JSONArray(list);
return new JsonRepresentation(arr);
}
}
(3).通过浏览器访问该资源,结果如下:
[{"sex":"男","age":50,"name":"曹操"},
{"sex":"女","age":23,"name":"小乔"},
{"sex":"男","age":32,"name":"周瑜"}]
2.返回xml类型数据:
(1).编写学生实体类(Student.java):
方法同上。
(2).编写资源处理类(GetDataResource):
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.restlet.data.MediaType;
import org.restlet.ext.xml.DomRepresentation;
import org.restlet.resource.Get;
import org.restlet.resource.ResourceException;
import org.restlet.resource.ServerResource;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
//定义一个资源
public class GetDataResource extends ServerResource {
/**返回XML类型数据*/
@Get
public DomRepresentation getXMLData() throws ResourceException, IOException{
//创建请求参数
DomRepresentation representation = new DomRepresentation(MediaType.APPLICATION_XML);
Document doc = representation.getDocument() ;
//创建节点
Node studentsNode = doc.createElement("Students");
List<Student> list = new ArrayList<Student>();
Student stu1 = new Student("曹操","男",50);
Student stu2 = new Student("小乔","女",23);
Student stu3 = new Student("周瑜","男",32);
list.add(stu1);
list.add(stu2);
list.add(stu3);
//设置值
for(Student stu : list){
Node studentNode = doc.createElement("student");
Node nameNode = doc.createElement("name");
Node sexNode = doc.createElement("sex");
Node ageNode = doc.createElement("age");
nameNode.setTextContent(stu.getName() + "");
sexNode.setTextContent(stu.getSex() + "");
ageNode.setTextContent(stu.getAge() + "");
studentNode.appendChild(nameNode);
studentNode.appendChild(sexNode);
studentNode.appendChild(ageNode);
studentsNode.appendChild(studentNode);
}
doc.appendChild(studentsNode);
return representation ;
}
}
(3).通过浏览器访问该资源,结果如下:
上面就是关于restlet返回json和xml类型数据的两个小列子,使用起来很简单。