Malik Atif Aziz
Malik Atif Aziz

Reputation: 45

Unable to retrieve data from POST request

I am working in JAVA 1.8 to write and using Apache Tomcat to run the server, I am unable to retrieve data from a POST request i.e in JSON.

I actually need it in an HashMap and I can even parse and convert it into HashMap even if it is readable in JSON. I have tried several links on the internet and I always get exception like 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

Can someone please share a guide on how can I receive this data and convert it into a Map or either I can directly get a Map!

Upvotes: 3

Views: 310

Answers (3)

Stefanos Kargas
Stefanos Kargas

Reputation: 11093

The request you send does not contain proper JSON in the body. You are missing the commas ",". It should be something like this:

{
  "1":"1",
  "FPG":"50",
  "Symptoms":"yes"
}

Just change it and give proper JSON format to the message. Even if the request was not in your control, I would strongly suggest that you contacted the service that creates the message and asked from them to fix it. It would be the last resort for me to make my own deserializer to handle an "inproper" message.

An easy way to check if your JSON is properly formated is an online formatter, e.g. https://jsonformatter.org/

Upvotes: 0

Bryan J. Diaz
Bryan J. Diaz

Reputation: 382

I strongly recommend you to use this library of JSON..

You can find it in Maven Repository

You can find it in Maven Repository and it's so easy to parse a JSON to a Map or to a JSONArray or JSONObject... depends of your necessity what you want to do..

Here is a example show how to parse a JSON to a HashMap

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

And that's all...

Now, if your JSON has a list of objects, i mean like a list of maps, what you just need to do is this...

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

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

Here is the explanation.

You take you JSON string and pass it as a parameter to the JSONArray,what JSONArray does is, take your json string a parse it to like a list

Then you make a for to get each Object of that list and parse it to a map.

Note: what the JSONObject does, is take the object of the JSONArray and parse it... you can parse it to a map or you can get each object of that map..

Upvotes: 1

Jinaraj
Jinaraj

Reputation: 61

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));
}

Upvotes: 1

Related Questions