JFinal中json的使用

以前Java開發一直使用的是經典的ssh,去年接觸了jfinal,以爲jfinal的魅力很是之大,讓我沒法自拔,如今還深深地陷在其中。 
簡單的介紹一下jfinal,jfinal短小精悍,讓java有了PHP通常的開發速度,急速的開發速度以外其餘的方面絕不遜色,我談談幾點本身使用jfinal的感覺吧。php

  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字符串。css

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

相關文章
相關標籤/搜索