我想使用XPages运行时附带的com.ibm.commons.util.io.json.*库将Java Bean序列化为JSON.
问题是它是否可以通过传递对象来自动执行 - 就像您可以使用Google库一样 - http://code.google.com/p/google-gson/或者您是否需要手动构建JSON我的意思是传递各个属性来构造JSON.
无法找到此库的文档,但我已经看到了一些示例:
http://www-10.lotus.com/ldd/ddwiki.nsf/dx/Sending_requests_in_Java_dds10
理想情况下,我们不想使用第三方库,即使它工作得很好,因为我们需要修改java安全属性文件,如果服务器升级则该文件又被擦除.
Phi*_*and 13
com.ibm.commons.util.io.json库是一个genric库,用于将JSON表示转换为Java对象.通用,我的意思是它使用工厂来浏览和更新Java对象(参见:JsonFactory).通过实现这样的工厂,并为所有属性实现getter/setter,可以序列化/反序列化任何类型的对象.JSON库配备了一组预定义的工厂:
我们说JavaBeans没有工厂,但实施这样的工厂应该不是什么大问题.
json的ibm commons库通过构造一个对象,然后将json属性添加到该对象来工作.它不能自动序列化对象,并且只能用于原始数据类型.
我附上了一些SSJS代码来说明如何使用该类.它假设recordMap是一个包含一些bean的java map实例,每个bean有5个名为fieldName1到fieldName5的字段.代码遍历映射中的每个bean,检索5个字段,将值转换为JSON,然后将它们推送到数组中.最后,将数组放入另一个包含count的json对象和数组本身.
var jsonObjArr = [];
var itr:java.util.Iterator = recordMap.keySet().iterator();
while (itr.hasNext()) {
var record = recordMap.get(itr.next());
var jsonObj:com.ibm.commons.util.io.json.JsonJavaObject =
new com.ibm.commons.util.io.json.JsonJavaObject();
jsonObj.putJsonProperty("fieldName1", record.getFieldName1());
jsonObj.putJsonProperty("fieldName2", record.getFieldName2());
jsonObj.putJsonProperty("fieldName3", record.getFieldName3());
jsonObj.putJsonProperty("fieldName4", record.getFieldName4());
jsonObj.putJsonProperty("fieldName5", record.getFieldName5());
jsonObj.putJsonProperty("fieldName6", record.getFieldName6());
jsonObjArr.push(com.ibm.commons.util.io.json.JsonGenerator
.toJson(com.ibm.commons.util.io.json.JsonJavaFactory.instanceEx, empr));
};
var jsonString = "{" +
"count:" + @Text(jsonObjArr.length) + "," +
"employees:" + "[" + jsonObjArr.join(",") + "]" +
"}";
return jsonString;
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助..
| 归档时间: |
|
| 查看次数: |
1998 次 |
| 最近记录: |