以前Java開發一直使用的是經典的ssh,去年接觸了jfinal,以爲jfinal的魅力很是之大,讓我沒法自拔,如今還深深地陷在其中。
簡單的介紹一下jfinal,jfinal短小精悍,讓java有了PHP通常的開發速度,急速的開發速度以外其餘的方面絕不遜色,我談談幾點本身使用jfinal的感覺吧。php
- 傳統的ssh框架,mybatis和springmvc等,須要配置大量的配置文件,一層層,感受無比的繁瑣。而jfinal甚至能夠達到0配置文件,固然他也是支持配置文件的,這種感受真是太棒了!
- jfinal一個框架搞定了全部的事情,什麼AOP啊、事務處理啊等等。不用擔憂包衝突啊,雜七雜八的,一個jar包解決全部問題。
- jfinal首創的Db+Record模式,model層無需字段直接操做數據庫。
- jfinal一樣支持各類各樣的插件,功能強大。
- 我在使用jfinal的時候最大的感受是,他打破了傳統的編程模式,編碼中dao層直接結合了model層,你甚至能夠在action層上寫sql代碼,感受真是無招勝有招!太隨心應手了!
回到正題
咱們來講一說jfinal中的json使用。
在struts2中或者是別的框架我相信你們都知道怎麼使用json向前臺傳值。json字符串拼接,或者用第三方jar包解析對象成json字符串。css
在jfinal中直接提供了一個方法renderJson();
這個方法有這幾種用法
![JFinal中json的使用](http://static.javashuo.com/static/loading.gif)
1. 輸出一個空的json
2. 把一個對象解析成json輸出
3. 輸出一個json字符串
4. 把一個字符數組按json格式輸出
5. 輸出把key和value組合成json輸出
其餘的我就不介紹了,關鍵我說一下我在使用json字符串輸出的時候碰見的問題
一開始我在後臺使用的renderText()輸出字符串,而且用的是單引號,我是這麼寫的
renderText("{'state':'success','msg':'評論成功!'}");
結果我發現這樣居然前臺沒法解析!原來單引號對於前臺是無效的,因而我就換一個寫法。
renderText("{state:\"success\",msg:\"評論成功!\"}");
發現仍是不行!因而我想起了renderJson這個方法
renderJson("{'state':'success','msg':'評論成功!'}"); renderJson("{state:\"success\",msg:\"評論成功!\"}");
這兩種都不能夠!!只好再試一下renderText()!
renderText("{\"state\":\"success\",\"msg\":\"評論成功!\"}");
結果成功了!在前臺使用JSON.parse()能夠解析這個對象。可是鬱悶的是,我在前臺使用了一個方法isJson(data)。判斷出來的居然是false,這可就頭大了。明明能夠解析,但判斷的確實false,並且用工具檢測也是json對象,有點小鬱悶。最後我試驗了jfinal中的renderJson
renderJson("{\"state\":\"success\",\"msg\":\"評論成功!\"}");
發現isJson(data)結果爲true了,太棒了!可是確開始報另一個錯誤,JSON.parse()解析錯誤!我嘗試了直接用js打印了data,msg居然能夠直接打印,果斷刪除了JSON.parse()函數,直接使用data.屬性。jfinal直接把他解析了,在前臺都不用再處理!在一個以爲jfinal很是棒!
總結一下
1.使用jfinal渲染json字符串必須使用轉義符和雙引號,並且使用renderJson方法,以下面
renderJson("{\"state\":\"success\",\"msg\":\"評論成功!\"}");
2.使用jfinal的renderJson在前臺無需再進行處理,直接能夠使用對象.屬性