当前位置:  开发笔记 > 编程语言 > 正文

如何使用Java通过Web服务以JSON格式公开数据?

如何解决《如何使用Java通过Web服务以JSON格式公开数据?》经验,为你挑选了3个好方法。

有没有一种简单的方法可以使用java将数据返回到JSON中的Web服务客户端?我很喜欢servlets,spring等.



1> blahspam..:

可能值得一看泽西岛.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 Set blahs = 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输出.

显然还有更多,但泽西岛让所有这些都很容易.

祝好运!



2> Geekygecko..:

我们一直在使用Flexjson将Java对象转换为JSON,并且发现它非常易于使用. http://flexjson.sourceforge.net

这里有些例子:

public String searchCars() {
  List cars = 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);



3> marcospereir..:

对我来说,最好的Java < - > JSON解析器是XStream(是的,我真的在谈论json,而不是xml).XStream已经处理了循环依赖,并且有一个简单而强大的api,你可以编写你的驱动程序,转换器等等.

亲切的问候


轻微的挑剔:XStream不是JSON _parser_.它是一个可以使用Jettison读取/写入JSON的对象序列化器,它使用json.org解析器并使用Stax XML API进行装饰.
推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有