20

我是第一次编写 Web 服务。我创建了一个基于Jersey的 RESTful Web 服务。我想生成 JSON。我需要做什么来生成我的 Web 服务的正确 JSON 类型?

这是我的一种方法:

@GET
@Path("/friends")
@Produces("application/json")
public String getFriends() {
    return "{'friends': ['Michael', 'Tom', 'Daniel', 'John', 'Nick']}";
}

@Produces("application/json")我只是为我的方法指出注释就足够了吗?那么这个方法可能返回任何类型的对象呢?还是只有字符串?我需要对这些对象进行额外的处理或转换吗?

请帮助我作为初学者处理这些问题。提前致谢!

4

5 回答 5

32

您可以使用 jaxb 注释来注释您的 bean。

  @XmlRootElement
  public class MyJaxbBean {
    public String name;
    public int age;

    public MyJaxbBean() {} // JAXB needs this

    public MyJaxbBean(String name, int age) {
      this.name = name;
      this.age = age;
    }
  }

然后您的方法将如下所示:

   @GET @Produces("application/json")
   public MyJaxbBean getMyBean() {
      return new MyJaxbBean("Agamemnon", 32);
   }

最新文档中有一章涉及此问题:

https://jersey.java.net/documentation/latest/user-guide.html#json

于 2012-11-27T23:37:49.863 回答
5

您可以使用像 org.json http://www.json.org/java/这样的包

因为您将需要更频繁地使用 JSONObjects。

在那里,您可以轻松地创建 JSONObjects 并在其中放入一些值:

 JSONObject json = new JSONObject();
 JSONArray array=new JSONArray();
    array.put("1");
    array.put("2");
    json.put("friends", array);

    System.out.println(json.toString(2));


    {"friends": [
      "1",
      "2"
    ]}

编辑这样做的好处是您可以在不同的层中构建响应并将它们作为对象返回

于 2012-11-28T08:55:37.977 回答
4
@GET
@Path("/friends")
@Produces(MediaType.APPLICATION_JSON)
public String getFriends() {

    // here you can return any bean also it will automatically convert into json 
    return "{'friends': ['Michael', 'Tom', 'Daniel', 'John', 'Nick']}";
}
于 2016-07-12T06:37:10.410 回答
1
@POST
@Path ("Employee")
@Consumes("application/json")
@Produces("application/json")
public JSONObject postEmployee(JSONObject jsonObject)throws Exception{
    return jsonObject;
}       
于 2016-11-09T12:01:53.753 回答
0

使用此注释

@RequestMapping(value = "/url", method = RequestMethod.GET, produces = {MediaType.APPLICATION_JSON})
于 2016-04-11T20:07:46.427 回答