无法从POST请求中检索数据

问题描述 投票:2回答:2

我正在使用JAVA 1.8进行编写,并使用Apache Tomcat来运行服务器,我无法从POST请求(即JSON)中检索数据。

我实际上在HashMap中需要它,即使它可以在JSON中读取,我甚至可以解析并将其转换为HashMap。我已经尝试了Internet上的几个链接,但总是遇到Could not deserialize to type interface PACKAGE NAME.

这样的异常
   @POST
    @Produces("application/json")
    @Consumes("application/json")
    @Path("ClassifyCase")
    public Rules Classify(HttpServletRequest request) {

        StringBuffer jb = new StringBuffer();
          String line = null;
          try {
            BufferedReader reader = request.getReader();
            while ((line = reader.readLine()) != null)
              jb.append(line);
          } catch (Exception e) { System.out.println("Buffer Reader Error"); }

          System.out.println("What I read: "+jb);
        System.out.println("Here la la l ala ");
//      System.out.println("Case: ++ "+Case.toString());
        System.out.println("Here la la l ala ");
        Rules foundRule = new Rules();
//        List<Rules> objListRules = new  ArrayList<Rules>();
        try
        {
            DataAccessInterface objDAInterface = new RuleDataAdapter();
            AbstractDataBridge objADBridge = new DatabaseStorage(objDAInterface);
//          foundRule = objADBridge.Classify(Case);
            logger.info("Classification done!");
        }
        catch(Exception ex)
        {
            logger.info("Error in classification");
            System.out.println("Couldnt Classify Properly!");
//          return 
        }
        return foundRule;
}    

This is how I am sending data through postman in JSON

有人可以分享有关如何接收这些数据并将其转换为地图的指南,或者我可以直接获取地图!

java java-api
2个回答
1
投票
String jsonString = "{\n" +
    "\t\"1\": \"1\",\n" +
    "\t\"FPG\": \"50\",\n" +
    "\t\"Symptoms\": \"Yes\"\n" +
    "}";
Map<String, String> map = new Gson().fromJson(jsonString, Map.class);
for (String key: map.keySet()) {
    System.out.println(map.get(key));
}

0
投票

我强烈建议您使用此JSON库。

You can find it in Maven Repository

您可以在Maven Repository中找到它,并且很容易将JSON解析为MapJSONArrayJSONObject ...根据您的需要进行操作..

这里是显示如何将JSON解析为HashMap的示例

Map<String, Object> map = new JSONObject(--JSONString here--).toMap();

仅此而已...

现在,如果您的JSON有一个对象列表,我的意思是像maps的列表一样,您只需要这样做...

JSONArray jsonArray = new JSONArray(--JSON string here--);

 for(int i = 0; i < jsonArray.length(); i++){
   Map<String, Object> map = jsonArray.getJSONObject(i).toMap();
 }

这里是解释。

您将JSON字符串作为参数传递给JSONArraywhat JSONArray does is, take your json string a parse it to like a list

然后创建一个for以获取该列表的每个Object并将其解析为map

JSONObject的工作是获取JSONArray的对象并对其进行解析...您可以将其解析为地图,也可以获取该地图的每个对象。]]

© www.soinside.com 2019 - 2024. All rights reserved.