将Java对象转换为JSONObject并在GET方法中传输它。

时间:2015-02-25 15:08:00

标签: json spring spring-mvc

  • 我正在开发一个Android应用程序,我也正在为此工作 基于Spring-MVC的服务器。不幸的是,在此之前,我还没有做过 在JSONObjects上做了很多工作。目前,我能够发送Java 从Android应用程序到服务器的对象,并接收Java对象 太。
    • 我有兴趣使用Google提供的Volley框架, 这将避免Asynctask的麻烦,并且更有效率,但是 它涉及JSONObject。
    • 不幸的是,无论我在网上看到什么,我都找到了代码 创建JSOnObjects以将其保存在本地硬盘驱动器上的某个文件中,但是 不,我想在ResponseBody中传送它们,任何人都可以帮助我 向JSOBObject创建一个JAVA对象,反之亦然。我有 所有POM依赖项,以及在servlet-context中设置的messageConvertors。

控制器代码当前:

//Restaurant is just a plain Java class, I can give it as a JSONObject, but I dont know how to convert that JSONObject to java so I can save the restaurant in the server.
 @RequestMapping(value = "/restaurant/add",method = RequestMethod.POST)
    @ResponseBody
    public String addRestaurantWebView(@RequestBody Restaurant restaurant){
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("restaurant", new Restaurant());
        modelAndView.addObject(restaurant);
        this.restaurantService.addRestaurant(restaurant);
        return "true";
    }

//Similarly, here, I don't know how to convert the Restaurant's list to JSONObject when there is a get Request. 
    @RequestMapping(value = "/restaurant/listing", method = RequestMethod.GET)
    public @ResponseBody List<Restaurant> listAllRestaurants(){
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("restaurant", new Restaurant());
        List<Restaurant> restaurantList = this.restaurantService.listRestaurants();
        modelAndView.addObject("listRestaurant", restaurantList);
        return restaurantList;
    }

我希望我的问题很明确,如果有任何疑问,请告诉我。非常感谢。

1 个答案:

答案 0 :(得分:3)

看看Google's Gson。它是一个非常简洁的API,用于将对象转换为JSON。您可以通过将类中的@Expose注释添加到需要包含的属性中来轻松指定属性。试试这样:

@RequestMapping(value = "/restaurant/listing", method = RequestMethod.GET)
public @ResponseBody String listAllRestaurants(){
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.addObject("restaurant", new Restaurant());
    List<Restaurant> restaurantList = this.restaurantService.listRestaurants();

    Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
    String jsonString = gson.toJson(restaurantList);

    return jsonString;
}

没有必要使用@Expose注释属性,但如果您最终有任何循环引用,它将有所帮助。

祝你好运。