使用velocity脚本语言遍历josn格式的字符串
1、由于数据库会存储一些json格式的字符,为方便以后使用筛选
如果这些数据我们查出来直接遍历使用velocity是根本行不通的,例如这样的话:java后端这样传
@RequestMapping(value="/mad/velocity.html")
public String test(ModelMap map){ House h = hoseService.getHouse(); String type = h.getAllType(); //String type = ["多功能方向盘","真皮座椅","电动天窗","真皮方向盘"];举例,和内容不一样 map.put("type ", type ); return "views/velocity"; }
前端:
<div class="baseinfo ">
<ul class="clearfix">
#foreach($a in $!{type})
<li>$a</li>
#end
</ul>
</div>
你会发现什么都遍历不出来;
我们把从数据查出来的json形式的字符串转换一下呢,转换成JSONArray形式;
@RequestMapping(value="/mad/velocity.html")
public String test(ModelMap map){ House h = hoseService.getHouse(); String type = h.getAllType(); map.put("type ", JSON.parseArray(type) ); return "views/velocity"; }
只要经过 JSON.parseArray() 一下返回一个 JSONArray 形式的就可以遍历了;
这里关于JSONArray 知识普及一下
一、JSONObject和JSONArray的数据表示形式
JSONObject的数据是用 { } 来表示的,
例如: { "id" : "123", "courseID" : "huangt-test", "title" : "提交作业", "content" : null }
而JSONArray,顾名思义是由JSONObject构成的数组,用 [ { } , { } , ...... , { } ] 来表示
例如: [ { "id" : "123", "courseID" : "huangt-test", "title" : "提交作业" } , { "content" : null, "beginTime" : 1398873600000 "endTime" } ] ;
表示了包含2个JSONObject的JSONArray。
可以看到一个很明显的区别,一个最外面用的是 { } ,一个最外面用的是 [ ] ;
二、如何从字符串String获得JSONObject对象和JSONArray对象
JSONObject jsonObject = new JSONObject ( String str);
JSONArray jsonArray = new JSONArray(String str ) ;
三、如何从JSONArray中获得JSONObject对象
大家可以把JSONArray当成一般的数组来对待,只是获取的数据内数据的方法不一样
JSONObject jsonObject = jsonArray.getJSONObject(i) ;
的,