在Web应用程序开发中,越来越多的页面采取了动态页面编辑技术。也就是说页面上的控件不再写死,而是根据客户端用户的需求进行变化。比如说页面初始化时候只有一个Text框,但是客户可以通过点击添加按钮等手段不断添加Text框, 也可以点击按钮删除Text框等等。对于这样的Web页面,进行服务器页面编程是很痛苦的,特别是在传统的Struts画面中,一个画面form中的控件对应后台ActionForm中的一个Field,如果这个时候画面上的控件本身就是变化多样,那么程序写起来会很麻烦。如果还有输入check,当服务器端check失败的时候还要返回服务器,刚才动态生成的页面以及用户输入的别的数据仍然要保留,这下如何是好呢。在这里,我想到了使用JSON。
JSON(JavaScript Object Notation)是一种Javascript的数据结构,采用文本的形式来表示。比如我拿一个例子来说。
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/1327ab569c1ae82736693a50b8e33378.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/7ff8d92cded7e0ce15e7ca1acc870052.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/7ff8d92cded7e0ce15e7ca1acc870052.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/7ff8d92cded7e0ce15e7ca1acc870052.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/7ff8d92cded7e0ce15e7ca1acc870052.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/7ff8d92cded7e0ce15e7ca1acc870052.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/7ff8d92cded7e0ce15e7ca1acc870052.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/7ff8d92cded7e0ce15e7ca1acc870052.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/7ff8d92cded7e0ce15e7ca1acc870052.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0196c3df5ea9e936f21e9932cca91014.gif)
看上去很可怕,其实并不难。在JSON中,大括号就是指一个Map,中括号就是数组。逗号是数组的分隔记号,冒号就是Map的key与Value的分割符号。Map中的值的取得可以采用类似Field的方法,比如people.authors就是authors后面的那个中括号数组内的数据。知道了这些概念以后就很好办了。
people.authors[1].lastName就是authors后中括号数组中的第二个大括号中的key为lastName的值,也就是Wiliams。用这种方法可以很方便的存储以及访问数据。
在Web页面提交的时候,可以利用json官方页面提供的json.js里面的toJSONString方法把一个Javascript中的数据结构转换为JSON文字列。这个json.js地址如下http://www.json.org/json.js
在数据提交以前在Hidden域上记录下JSON,然后在后台Java程序中解析此JSON,还原为Java对象,然后后台处理过后,把处理后的Java对象再一次写成JSON字符串,然后在前台Web页面中使用。这样的话,就可以利用JSON使前台和后台之间共享复杂的数据结构了。