【问题标题】:How to read JSON message in request on RESTful service side.如何在 RESTful 服务端的请求中读取 JSON 消息。
【发布时间】:2017-04-03 07:41:02
【问题描述】:

我正在尝试读取从服务上的客户端发送的 JSON 数据。 无论我尝试什么,我都会在控制台中得到一个空对象。 //我的服务

 @Path("signup")
    public class signupservice {


          @POST
          @Consumes(MediaType.APPLICATION_JSON)
          @Produces(MediaType.APPLICATION_JSON)
          public JSONObject Signmeup( JSONObject inputJsonObj) throws JSONException {

            String fname  = inputJsonObj.toString();   
            System.out.println(fname);   
            JSONObject outputJsonObj = new JSONObject();
            outputJsonObj.put("output", "output");
            return outputJsonObj;
          }
    }

我正在从邮递员发送请求。

【问题讨论】:

  • 请求正文中有什么内容?
  • { "first_name" : "datta", "last_name" : "vamshi" }
  • @mismanc 你能举个例子吗?
  • 我想在不使用 url 编码的情况下发送 JSON 消息体
  • 您为 JSONObject 使用了哪个库?

标签: java json rest jax-rs


【解决方案1】:

使用@RequestBody注解从Request header中读取发布的数据

  public JSONObject Signmeup(@RequestBody String inputJsonObj) throws {
//your code
    }

【讨论】:

  • 我找不到“@RequestBody”标签。
  • 尝试导入这个 org.springframework.web.bind.annotation.RequestBody 包。
【解决方案2】:

如果您想从服务上的客户端发送的 JSON 中获取 first_name 和 last_name。你可以试试这个。

@Path("signup")
public class signupservice {
    @POST
    @Consumes("application/json")
    @Produces(MediaType.APPLICATION_JSON)
    public JSONObject Signmeup(String inputJsonObj) throws JSONException {
        JSONObject innerJson = new JSONObject(inputJsonObj);
        //Get first_name and last_name from JSON
        String fname  = innerJson.getString("first_name");
        String lname  = innerJson.getString("last_name");
        System.out.println(fname);
        System.out.println(lname);

        JSONObject outputJsonObj = new JSONObject();
        outputJsonObj.put("output", "output");
        return outputJsonObj;
    }
}

【讨论】:

  • 严重:RuntimeException 无法映射到响应,重新抛出到 HTTP 容器 org.json.JSONException: JSONObject["first_name"] not found.
  • @TumuluriVDattaVamshi 在SignmeupinputJsonObj 方法中执行sysout 并告诉我你在sysout 中得到了什么?喜欢System.out.println("inputJsonObj : " + inputJsonObj);
  • @TumuluriVDattaVamshi 我只是更新我的答案。你可以试试这个。
  • @TumuluriVDattaVamshi 我只是把JSONObject inputJsonObj改成String inputJsonObj
  • @TumuluriVDattaVamshi 这个问题解决了吗?
猜你喜欢
  • 2017-08-17
  • 2014-05-01
  • 2023-03-23
  • 1970-01-01
  • 2013-04-14
  • 2010-10-22
  • 2016-09-08
  • 1970-01-01
  • 2015-07-28
相关资源
最近更新 更多