之前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()

这个方法有这几种用法

1. 输出一个空的json

2. 把一个对象解析成json输出

3. 输出一个json字符串

4. 把一个字符数组按json格式输出

5. 输出把key和value组合成json输出

其他的我就不介绍了,关键我说一下我在使用json字符串输出的时候遇见的问题

一开始我在后台使用的renderText()输出字符串,并且用的是单引号,我是这么写的

  1. renderText("{'state':'success','msg':'评论成功!'}");

结果我发现这样竟然前台无法解析!原来单引号对于前台是无效的,于是我就换一个写法。

  1. renderText("{state:\"success\",msg:\"评论成功!\"}");

发现还是不行!于是我想起了renderJson这个方法

  1. renderJson("{'state':'success','msg':'评论成功!'}");
  2. renderJson("{state:\"success\",msg:\"评论成功!\"}");

这两种都不可以!!只好再试一下renderText()!

  1. renderText("{\"state\":\"success\",\"msg\":\"评论成功!\"}");

结果成功了!在前台使用JSON.parse()可以解析这个对象。但是郁闷的是,我在前台使用了一个方法isJson(data)。判断出来的竟然是false,这可就头大了。明明可以解析,但判断的确实false,而且用工具检测也是json对象,有点小郁闷。最后我试验了jfinal中的renderJson

  1. renderJson("{\"state\":\"success\",\"msg\":\"评论成功!\"}");

发现isJson(data)结果为true了,太棒了!但是确开始报另外一个错误,JSON.parse()解析错误!我尝试了直接用js打印了data,msg竟然可以直接打印,果断删除了JSON.parse()函数,直接使用data.属性。jfinal直接把他解析了,在前台都不用再处理!在一个觉得jfinal非常棒!

总结一下

1.使用jfinal渲染json字符串必须使用转义符和双引号,而且使用renderJson方法,如下面

  1. renderJson("{\"state\":\"success\",\"msg\":\"评论成功!\"}");

2.使用jfinal的renderJson在前台无需再进行处理,直接可以使用对象.属性

JFinal中json的使用的更多相关文章

  1. C#中JSON序列化和反序列化

    有一段时间没有到博客园写技术博客了,不过每天逛逛博客园中大牛的博客还是有的,学无止境…… 最近在写些调用他人接口的程序,用到了大量的JSON.XML序列化和反序列化,今天就来总结下json的序列化和反 ...

  2. android中Json的一些应用

    JSON(JavaScript Object Notation) :一种轻量级的数据交换格式,基于JavaScript的一个子集. JSON采用完全独立于语言的文本格式,使JSON成为理想的数据交换语 ...

  3. 解决MVC中JSON字符长度超出限制的异常

    解决MVC中JSON字符长度超出限制的异常 解决方法如下: <configuration> <system.web.extensions> <scripting> ...

  4. Asp.net中Json的序列化和反序列化(一)

    JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍 ...

  5. .NET3.5中JSON用法以及封装JsonUtils工具类

    .NET3.5中JSON用法以及封装JsonUtils工具类  我们讲到JSON的简单使用,现在我们来研究如何进行封装微软提供的JSON基类,达到更加方便.简单.强大且重用性高的效果. 首先创建一个类 ...

  6. Net中JSON序列化和反序列化处理(日期时间特殊处理)

    0  缘由 笔者最近在web api端使用Json.Net进行序列化处理,而在调用端使用DataContractSerializer进行反序列化,遇到日期时间处理反序列化不成功[备注:笔者使用Net ...

  7. ASP.NET中JSON的序列化和反序列化

    JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍 ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介 ...

  8. ASP.NET 中JSON 的序列化和反序列化

    JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍 ...

  9. 关于http接口开发中json格式数据编码问题处理

    关于http接口开发中json格式数据编码问题处理 在实际工作中,接口很多时候返回json格式,但有时返回的格式会有编码问题 假设如下接口:http://service.test.com/interf ...

随机推荐

  1. python实现无重复字符串的最长子串

    给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc&qu ...

  2. BZOJ 1036 [ZJOI2008]树的统计Count (树链剖分)(线段树单点修改)

    [ZJOI2008]树的统计Count Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 14968  Solved: 6079[Submit][Stat ...

  3. 注册表数据提取工具RegRipper

    注册表数据提取工具RegRipper   注册表是Windows操作系统一个数据库,用来存储系统和应用程序设置信息.注册表信息分别保存在操作系统中的6个Hive文件中.获取这几个文件,就可以从中提取注 ...

  4. Sum of bit differences among all pairs

    This article was found from Geeksforgeeks.org. Click here to see the original article. Given an inte ...

  5. 2,搭建一个java开发环境

    (1)java开发需要的条件? 1)适用于环境开发的jdk(里面包括了jre和加热里面包括了jvm) 2)对应开发环境的eclipse 3)如果涉及到web开发,还需要web服务器(Tomcat) ( ...

  6. Bean的实例化--静态工厂

    1,创建实体类User package com.songyan.demo1; /** * 要创建的对象类 * @author sy * */ public class User { private S ...

  7. 如何隐藏 video 元素的下载按钮

    1. 使用 video 元素的 ControlList API <video controls controlsList="nodownload"></video ...

  8. Linux下查看某个进程的网络带宽占用情况

    说明: 1.可能查看某个进程的带宽占用需要明确知道PID.进程名字.发送速度.接收速度. 2.很遗憾,在Linux原生的软件中没有这样的一款,只能额外装,最符合以上的情况就只有nethogs. 3.n ...

  9. 矩阵压缩写法 scipy spark.ml.linalg里都有,CRS,CCS

    CRS 表示:Compressed Row Storage CCS 表示:Compressed Column Storage CRS的表示参考: https://blog.csdn.net/buptf ...

  10. SWIG 多语言接口变换 【转】

    一.             SWIG 是Simple Wrapper and Interface Generator的缩写,是一个帮助使用C或者C++编写的软件创建其他编语言的API的工具.例如,我 ...