如何通过 RESTful Web 服务正确生成 JSON?

2022-09-02 09:06:24

我第一次编写 Web 服务。我创建了一个基于泽西岛的RESTful网络服务。我想生成 JSON。我需要执行哪些操作才能生成 Web 服务的正确 JSON 类型?

这是我的方法之一:

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

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

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


答案 1

您可以使用 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


答案 2

你可以使用像 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"
    ]}

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