grails Domian对象转JSON去class以及自定义字段的最佳方式

grails:2.4.x

IDE:Intellij IDEA 13.x

grails的Domain对象之间如果存在环形引用,直接使用as JSON只会输出关联对象的id,并且如果使用deep也会报错且deep并不支持层级输出设置。达不到一些程序的使用需求。

所以自己在网上翻了很多资料,最终测试出一个比较简单可靠的方案:

1、在config.groovy中添加一句针对JSON转换的配置

grails.converters.default.circular.reference.behaviour = "INSERT_NULL"

根据官方文档描述grails的converters类在转换JSON或XML时默认是输出所有环型引用的对象,所以这里要把它改成“INSERT_NULL”,就是如果碰到环型引用,就输出NULL

2、对象转换及自定义字段代码:

                JSON.use("deep")  //关键,一定要有
                def json = new JSON(ug)
//                json.setIncludes(Org.class,["field1","field2"])   //指定某字段可以用这个方法
                json.setExcludes(Org.class,["class"]) //去除不要的字段
                json.setExcludes(User.class,["class","passwordHash"]) //去除不要的字段
                json.setExcludes(Role.class,["class"]) //去除不要的字段
//                json.prettyPrint = true  //格式化json字符串(可有可无)
//                //如果想要添加其它字段,可以用以下方式
//                JSONObject myjson = new JSONObject()
//                myjson.put("dataList",json)
//                myjson.put("page",1)
//                myjson.put("pageSize",2)
//                myjson.put("pageTotal",3)
//                myjson.put("dataCount",4)
//                myjson.put("searchContent",5)
//                println(myjson)
                render json

3、其实还可以用JSON.registerObjectMarshaller来写自己的JSON构造方法,但是这个方法使用不太方便,所以暂不推荐,只有想用grails的JSON去转换其它框架里的对象时可能会用到(比如activiti框架的Entity对象)。

grails Domian对象转JSON去class以及自定义字段的最佳方式

时间: 2024-08-01 22:46:44

grails Domian对象转JSON去class以及自定义字段的最佳方式的相关文章

Javascript中Json对象与Json字符串互相转换方法汇总(4种转换方式)

1.Json对象转Json字符串 JSON.stringify(obj); 2.Json字符串传Json对象 JSON.parse(str);//第一种 $.parseJSON(str);//第二种,等价于jQuery.parseJSON(str); eval('(' + str + ')');//第三种 (new Function("return " + str))();//第四种 3.样例 var obj={"one":"I am 1",&q

fastJosn 转换对象为json格式字符串时, 空字段处理.

public static void main(String[] s) { CybWmsCommoditiesVo cybWmsCommoditiesVo = new CybWmsCommoditiesVo(); CybItemVo cybItemVo = new CybItemVo(); cybItemVo.setStockUnit("2134"); cybWmsCommoditiesVo.setSupplierCode("24234"); cybWmsCommo

FastJson、Jackson、Gson进行Java对象转换Json的细节处理

前言 Java对象在转json的时候,如果对象里面有属性值为null的话,那么在json序列化的时候要不要序列出来呢?对比以下json转换方式 一.fastJson 1.fastJson在转换java对象为json的时候,默认是不序列化null值对应的key的 也就是说当对象里面的属性为空的时候,在转换成json时,不序列化那些为null值的属性 具体案例如下: AutoPartsSearchRequest 有以下属性: public static void main(String[] args

java对象转JSON JS取JSON数据

JsonConfig config = new JsonConfig(); config.setJsonPropertyFilter(new PropertyFilter() { @Override public boolean apply(Object arg0, String arg1, Object arg2) { // 过滤掉对象里的包含自己的属性(自己关联自己) if (arg1.equals("wareTypes") || arg1.equals("skillS&

JSON(二)——JavaScript中js对象与JSON格式字符串的相互转换

首先我们来看一下js中JSON格式的字符串 var JSONStr1 = "{\"name\" : \"张三\"}"; 注意以下的写法不是js中JSON格式的字符串,它只是一个js的字符串. var JSONStr2 = "{'name' : '张三'}"; 我们看JSON语法中对于字符串的定义:是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义.一个字符(character)即一个单独的字符串(characte

Java对象与JSON互相转换jsonlib以及手动创建JSON对象与数组——(二)

首先声明一下,jsonlib转换与GSON相比太差劲了,操作不是一般的繁琐.GSON可以直接转换成各种集合与对象类型.强烈推荐使用GSON.而且GSON一个方法就可以解决,jsonlib转来转去太繁琐了. 手动创建JSONObject与JSONArray有用,用于读取文件对字符串进行处理 -----------------------------jsonlib操作复杂,转换Map与list<map>更是复杂---------------- Jar包 User.java 1 package Te

JSON-lib框架,JAVA对象与JSON、XML之间的相互转换

Json-lib可以将Java对象转成json格式的字符串,也可以将Java对象转换成xml格式的文档,同样可以将json字符串转换成Java对象或是将xml字符串转换成Java对象. 一. 准备工作  1. 首先要去官方下载json-lib工具包 下载地址: http://sourceforge.net/projects/json-lib/files/json-lib/json-lib-2.4/ 目前最新的是2.4的版本,本示例中使用的是v2.3:json-lib还需要以下依赖包: jakar

使用jackson对Java对象与JSON字符串相互转换的一些总结

本文为菠萝大象原创,如要转载请注明出处.http://www.blogjava.net/bolo 代码无真相,为了最简单的说明,我直接上代码. public class User { private String name; private Gender gender; private List<Account> accounts; 省略get和set方法 ... } public enum Gender { MALE, FEMALE } public class Account { priv

javaEE SSH框架对象转json问题

最近毕设需要给App端写接口,一般都是返回json格式的数据,但是将对象转为json时总是报错,之前做后台界面使用ajax的时候也出现过. 一.需求:返回学生信息.学生对应部门信息.学生对应班级信息json数据 (1)实体类 public class Student implements java.io.Serializable{ /** * */ private static final long serialVersionUID = 1L; private Integer id; priva