日期:2014-05-16 浏览次数:20523 次
@XmlType(propOrder={"id", "firstName", "lastName", "phoneNumbers"})
public class Customer {
private int id;
private String firstName;
private String lastName;
private List<PhoneNumber> phoneNumbers = new ArrayList<PhoneNumber>();
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
@XmlElement(nillable=true)
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
@XmlElement
public List<PhoneNumber> getPhoneNumbers() {
return phoneNumbers;
}
}
import javax.xml.bind.annotation.*;
@XmlAccessorType(XmlAccessType.FIELD)
public class PhoneNumber {
private String type;
private String number;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
}
import java.util.*;
import javax.json.*;
import javax.json.stream.JsonGenerator;
import javax.xml.bind.*;
import org.eclipse.persistence.jaxb.JAXBContextProperties;
import org.eclipse.persistence.oxm.json.*;
public class MarshalDemo {
public static void main(String[] args) throws Exception {
Map<String, Object> jaxbProperties = new HashMap<String, Object>(2);
jaxbProperties.put(JAXBContextProperties.MEDIA_TYPE, "application/json");
jaxbProperties.put(JAXBContextProperties.JSON_INCLUDE_ROOT, false);
JAXBContext jc = JAXBContext.newInstance(new Class[] {Customer.class},
jaxbProperties);
Marshaller marshaller = jc.createMarshaller();
//创建 JsonArrayBuilder
JsonArrayBuilder customersArrayBuilder = Json.createArrayBuilder();
Customer customer = new Customer();
customer.setId(1);
customer.setFirstName("Jane");
customer.setLastName(null);
PhoneNumber phoneNumber = new PhoneNumber();
phoneNumber.setType("cell");
phoneNumber.setNumber("555-1111");
customer.getPhoneNumbers().add(phoneNumber);
JsonArrayBuilderResult result =
new JsonArrayBuilderResult(customersArrayBuilder);
marshaller.marshal(customer, result);
List<PhoneNumber> phoneNumbers = new ArrayList<PhoneNumber>(2);
PhoneNumber workPhone = new PhoneNumber();
workPhone.setType("work");
workPhone.setNumber("555-2222");
phoneNumbers.add(workPhone);
PhoneNumber homePhone = new PhoneNumber();
homePhone.setType("home");
homePhone.setNumber("555-3333");
phoneNumbers.add(homePhone);