使用对象转化为Json的相关jar包,一般来说使用的时json-lib,实际上类似的框架和技术还有很多,比如上面的jackson就能做,不过笔者习惯于使用json-lib,使用起来会更方便和顺手一点。
maven:
<!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib --> <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> </dependency>
2:Spring 配置:无
3:后台:
@RequestMapping("/page") public ModelAndView returnView(){ ModelAndView mv = new ModelAndView(); mv.setViewName("showJson"); Entity entity = new Entity("chentao","a handsome man"); JSONObject entityJson = JSONObject.fromObject(entity); mv.addObject("entityJson",entityJson); return mv; }
关键是JSONObject.fromObject()方法。
4:前台:
<script> var json = ${entityJson}; alert(json); </script>
注意这里的El表达式写法${entityJson},浏览器在进行渲染之前,tomcat已经将${entityJson}替换为json字符串。这个时候json直接就是一个可以使用的对象而不再需要进行转化
结果如下;
注意,这种方式只有在jsp页面中才有效果,如果不是jsp页面,只能乖乖使用第一种方式了。
三、总结
@Response注解的方式 返回ModelAndView方式优点 编写简单;适合当前ajax方式; 更加灵活,页面和数据一同返回。
缺点 灵活性不足
需要手动转化json;
前台接受数据只能用在jsp页面里。
实现要点 @ResponseBody;jackson-jar包;ajax; JsonObject.fromObject();El表达式:${}.
四、扩展
本文档使用的是SpringMVC框架,实际上第一种方式本质上是使用Response的writer对象来传递数据,而第二种方式使用request传递数据。所以如果使用原生servlet或者其他框架也是能够实现类似的功能的。