将Java对象转换为JSONObject并以GET方法传输。

  • 我正在开发一个Android应用程序,为此我还正在开发基于Spring-MVC的服务器。不幸的是,在此之前,我还没有在JSONObjects上做太多工作。目前,我能够从Android应用程序将Java对象发送到服务器,也可以接收Java对象。

    • 我对使用Google提供的Volley框架感兴趣,该框架将避免Asynctask的麻烦,并且效率更高,但它处理JSONObject。
    • 不幸的是,无论我在网上什么地方,都找到了创建JSOnObjects的代码,将其保存在本地硬盘上的某个文件中,但是不,我想在ResponseBody中传输它们,任何人都可以帮助我为JSOBObject创建JAVA对象反之亦然。我具有所有POM依赖项,并在servlet上下文中设置了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;

}

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

回答:

看看Google的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注释属性,但是如果最终有任何循环引用,它将很有用。

祝好运。

以上是 将Java对象转换为JSONObject并以GET方法传输。 的全部内容, 来源链接: utcz.com/qa/434091.html

回到顶部