Search code examples
javajsonspring-bootarraylistresttemplate

How can I convert ArrayList/Set to JSON and post data using postforobject method?


I have set which contains string ["a" , "b" , "c"] , I want to POST json data like (comma seperated and one string) Here is

JSON

{"view" : "a,b,c",
"fruits" : "apple"}

to the endpoing using Resttemplate postForObject method? I have used GSON but that is not working in my project. Are there any other alternatives?

Here is my code

    private run(set<data> datas) {
            Set<string> stack = new hashset<>();
            iterator<data> itr = datas.iterator();
            while (itr.hasnext()) {
                data macro = itr.next();

                if (//some condition) {
                    stack.add(macro);

                        }
                    }
                }
            }
            Resttemplate.getmessageconverters().add(stringconvertor);
            String result = resttemplate.postforobject(endpoint, request, String.class);
}

Solution

  • If the data is in a specific class like format, you could go with the POJO approach that is encouraged by Spring Boot. But looking at your example, it seems like you want to achieve a one time JSON Object response.

    import org.json.simple.JSONObject;    
    
    public static void run(set<data> datas, string endpoint){    
      // build your 'stack' set
      String joined = String.join(",", stack);
      JSONObject obj=new JSONObject();    
      obj.put("view",joined);    
      obj.put("fruits","apple");    
      //return the jsonObject as the response to your entrypoint using your method     
    }    
    

    You could also try the following if you use @ResponseBody annotation in Spring Boot that will convert the Response Body to the appropriate (JSON) format.

        HashMap<String, String> map = new HashMap<>();
        map.put("view", joined);
        map.put("fruits", "apple");
        return map;