JFinal中json的使用


之前Java開發一直使用的是經典的ssh,去年接觸了jfinal,覺得jfinal的魅力非常之大,讓我無法自拔,現在還深深地陷在其中。 
簡單的介紹一下jfinal,jfinal短小精悍,讓java有了PHP一般的開發速度,急速的開發速度之外其他的方面毫不遜色,我談談幾點自己使用jfinal的感受吧。

  1. 傳統的ssh框架,mybatis和springmvc等,需要配置大量的配置文件,一層層,感覺無比的繁瑣。而jfinal甚至可以達到0配置文件,當然他也是支持配置文件的,這種感覺真是太棒了!
  2. jfinal一個框架搞定了所有的事情,什么AOP啊、事務處理啊等等。不用擔心包沖突啊,雜七雜八的,一個jar包解決所有問題。
  3. jfinal獨創的Db+Record模式,model層無需字段直接操作數據庫。
  4. jfinal同樣支持各種各樣的插件,功能強大。
  5. 我在使用jfinal的時候最大的感覺是,他打破了傳統的編程模式,編碼中dao層直接結合了model層,你甚至可以在action層上寫sql代碼,感覺真是無招勝有招!太隨心應手了!

回到正題

我們來說一說jfinal中的json使用。 
在struts2中或者是別的框架我相信大家都知道怎么使用json向前台傳值。json字符串拼接,或者用第三方jar包解析對象成json字符串。

在jfinal中直接提供了一個方法renderJson()

這個方法有這幾種用法

JFinal中json的使用

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在前台無需再進行處理,直接可以使用對象.屬性


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM