【问题标题】:Injecting JSON string directly to JSON object in RESTFUL将 JSON 字符串直接注入 RESTFUL 中的 JSON 对象
【发布时间】:2013-07-09 18:11:13
【问题描述】:

我正在实现 jersey restful web 服务来直接获取 JSON 对象。为此,我将传递一个字符串(Json 格式)。下面给出了我要实现的类代码的结构。

@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes({MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON})
public JSON putToJson(JSON todo)
{
    //*********


    return todo;
}

请坚持我如何将 JSON 字符串直接注入 JSON 对象。

提前谢谢.......

【问题讨论】:

    标签: rest jersey


    【解决方案1】:

    根据我对您问题的理解:

    下面的代码会将 JSON 字符串直接注入到 JSONObject 中,您可以访问该对象

    @POST
    @Consumes("application/json")
    @Produces("application/json")
    public JSONObject putToJson(@FormParam("jsonString") JSONObject strJson) throws     JSONException {
    {
        strJson.put("abc", "xyz");
        return strJson;
    } 
    

    【讨论】:

      【解决方案2】:

      首先,你需要json运行时依赖,如果你使用maven,添加这个:

      <dependency>
      <groupId>com.sun.jersey</groupId>
      <artifactId>jersey-json</artifactId>
      <version>${jersey-version}</version>
      </dependency>
      

      其次,使用 JAXB 注释对您的 vo 进行注释

      @XmlRootElement
      @XmlAccessorType(XmlAccessType.FIELD)
      public class VO implements Serializable {
          @XmlElement
          private String id;
      
          public String getId() {
              return id;
          }
      
          public void setId(String id) {
              this.id = id;
          }
      }
      

      那你就可以直接返回vo了。

      @PUT
      @Produces(MediaType.APPLICATION_JSON)
      @Consumes({MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON})
      public VO putToJson(VO vo)
      {
          //*********
      
      
          return vo;
      }
      

      【讨论】:

      • 非常感谢您的快速回复 :) 我为 DTO 对象做到了。但在这里我将传递 JSON 字符串,我只需要将其转换为 JSON 对象。没有预定义的 DTO / Bean 类。
      猜你喜欢
      • 2017-07-12
      • 2019-06-11
      • 1970-01-01
      • 1970-01-01
      • 2018-09-09
      • 1970-01-01
      • 2020-08-06
      • 2011-10-05
      • 1970-01-01
      相关资源
      最近更新 更多