(停止维护 since 2017年8月)
Beetl-JsonTool 作为beetl模板引擎的一个附属工具,提供了对象序列化成json技术。其原理是基于(Location:action)*,功能强大,扩展性强,比fastjson,jackson,gosn基于annotatoin的强大,也远远超过了jodd json,flexjson序列化能力 而体积小,仅仅不到70K。它能允许通过序列化策略来个性化的序列化对象到JSON而无需编程或者包装原有对象,而它的性能也是相当优秀。
api 例子如下
JsonTool tool = new JsonTool(); String json = tool.serialize(user); String json1 = tool.serialize(user,"id:i")); //忽略属性 String json2 = JsonTool.serialize(list,"[1].id:i")); //忽略第二个元素的id属性 //所有属性都会执行hinernateCheck的回调 String json2 = JsonTool.serialize(obj,"*:!hibernate"));
序列化策略例子:
name:i 忽略name属性 id:i,obj.id:i 忽略属性id,忽略属性obj对象的id的属性.可以将多个序列化策略组合在一起,用逗号分开 name:nn/myName/ 将属性name输出成myName ~L/com.test.User/:o/name, age/ User对象实例排序输出,name,age 先输出,其他按照定义输出 [1].date:f/yyyy-MM-dd/ 列表第二项目的date属性格式化输出
序列化规则
序列化规则可以有多个,每个包含一个location和action对,用冒号分开,每个序列化规则用逗号分开,这个类似json的格式,如 name:i,user.id:i,~L/#ju.Collection*/:->null 如上表示三个序列化规则,
location和action有可能出现//,这类似程序语言的(),里面是参数,如~L/#ju.Collection*/
Action:定义了一个匹配动作的输出,有忽略属性,包含属性,排序,改名,条件判断,直接赋值,调用回调等
Location:定义了一个序列化的位置,如属性名,或者属性表达式,列表(数组)元素,类等
问题内容: 我必须将一棵巨大的对象树(7,000)序列化到磁盘中。最初,我们将这棵树保存在Kodo的数据库中,但是它将花费数以千计的查询将该树加载到内存中,并且将占用本地Universe可用时间的很大一部分。 我为此尝试了序列化,的确可以提高性能。但是,我觉得可以通过编写自己的自定义序列化代码来改善这一点。我需要尽可能快地加载此序列化对象。 在我的机器上,序列化/反序列化这些对象大约需要15秒。从
问题内容: 我有一个实体: 然后我有一个控制器,其目的是检索书籍,我的问题是,流派字段包含在控制器的json响应中。有什么办法可以排除杰克逊序列化对象时延迟加载的那些字段? 这是我的ObjectMapper的配置: 谢谢! 我无法将其标记为JsonIgnore,因为它将永远在序列化框中。有时候,我将需要随书一起检索体裁,到那时,我将在查询中使用“获取联接”,因此它不会为null。 问题答案: 你可
问题内容: 你好亲爱的同事们, 我有一个Garden类,在其中我可以序列化和反序列化多个Plant类对象。如果想将其分配给mein静态方法中的调用变量,则可以进行序列化,但是不能进行反序列化。 反序列化代码: 我的调用代码: 编辑 我有一个空的Pointer异常 @NilsH的解决方案工作正常,谢谢! 问题答案: 如何序列化整个列表呢?无需序列化列表中的每个对象。 如果那不能解决您的问题,请发布有
主要内容:示例我们将一个Java对象序列化为一个Json文件,然后读取该Json文件以获取对象。 在这个例子中,创建一个类。 然后将对象列化后存储在文件中,该文件将具有对象的json表示形式。 示例 在中创建一个名为的Java类文件,参考以下代码 - 执行上面示例代码,得到以下结果 -
主要内容:1 编写核心类,2 运行测试本文讲解如何将一个Java对象序列化为一个json文件,然后读取该json文件读取回对象。在下面的示例中,我们创建Student类。使用Jackson存储到一个student.json文件,该文件拥有Student对象的JSON表示形式。 1 编写核心类 MainApp: 2 运行测试
字符串数据编码和解码 # pickle_string.py import pickle import pprint data = [{'a': 'A', 'b': 2, 'c': 3.0}] print('DATA:', end=' ') pprint.pprint(data) data_string = pickle.dumps(data) print('PICKLE: {!r}'.form
本文向大家介绍java对象的序列化和反序列化,包括了java对象的序列化和反序列化的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java对象的序列化和反序列化,供大家参考,具体内容如下 1. 什么是序列化 将对象转换为字节流保存起来,比如保存到文件里,并在以后还原这个对象,这种机制叫做对象序列化。(补充一句:把对象保存到永久存储设备上称为持久化) 2. 怎么实现序列化