有没有一种简单的方法可以使用java将数据返回到JSON中的Web服务客户端?我很喜欢servlets,spring等.
可能值得一看泽西岛.Jersey可以轻松地将restful Web服务公开为xml和/或JSON.
一个例子......从一个简单的类开始
@XmlType(name = "", propOrder = { "id", "text" }) @XmlRootElement(name = "blah") public class Blah implements Serializable { private Integer id; private String text; public Blah(Integer id, String text) { this.id = id; this.text = text; } @XmlElement public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } @XmlElement public String getText() { return text; } public void setText(String value) { this.text = value; } }
然后创建一个资源
@Path("/blah") public class BlahResource { private Setblahs = new HashSet (); @Context private UriInfo context; public BlahResource() { blahs.add(new Blah(1, "blah the first")); blahs.add(new Blah(2, "blah the second")); } @GET @Path("/{id}") @ProduceMime({"application/json", "application/xml"}) public Blah getBlah(@PathParam("id") Integer id) { for (Blah blah : blahs) { if (blah.getId().equals(id)) { return blah; } } throw new NotFoundException("not found"); } }
并暴露它.有很多方法可以做到这一点,例如使用Jersey的ServletContainer.(web.xml)中
jersey com.sun.jersey.spi.container.servlet.ServletContainer 1 jersey /*
这就是你需要做的...弹出你的浏览器并浏览到http:// localhost/blah/1.默认情况下,您将看到XML输出.如果您使用的是FireFox,请安装TamperData并将accept
标头更改为application/json
以查看JSON输出.
显然还有更多,但泽西岛让所有这些都很容易.
祝好运!
我们一直在使用Flexjson将Java对象转换为JSON,并且发现它非常易于使用. http://flexjson.sourceforge.net
这里有些例子:
public String searchCars() { Listcars = carsService.getCars(manufacturerId); return new JSONSerializer().serialize(cars); }
它有一些很酷的功能,比如deepSerialize来发送整个图形,它不会破坏双向关系.
new JSONSerializer().deepSerialize(user);
在服务器端格式化日期通常也很方便
new JSONSerializer().transform( new DateTransformer("dd/MM/yyyy"),"startDate","endDate" ).serialize(contract);
对我来说,最好的Java < - > JSON解析器是XStream(是的,我真的在谈论json,而不是xml).XStream已经处理了循环依赖,并且有一个简单而强大的api,你可以编写你的驱动程序,转换器等等.
亲切的问候