我正在使用xpages和javascript服务器端我希望转换json格式的字段然后我解析这个数据并将它们放在网格中,问题是这些字段可以包含值:一个项目或一个列表如何在json中转换它们? 这是我的代码:
this.getWFLog = function ()
{
var wfLoglines = [];
var line = "";
if (this.doc.hasItem (WF.LogActivityPS) == false) then
return ("");
var WFLogActivityPS = this.doc.getItem ("WF.LogActivityPS");
var WFActivityInPS = this.doc.getItem ("WFActivityInPS");
var WFActivityOutPS = this.doc.getItem ("WFActivityOutPS");
var WFLogDecisionPS = this.doc.getItem ("WF.LogDecisionPS");
var WFLogSubmitterPS = this.doc.getItem ("WF.LogSubmitterPS");
var WFLogCommentPS = this.doc.getItem ("WF.LogCommentPS");
var WFLogActivityDescPS = this.doc.getItem ("WF.LogActivityDescPS");
var Durr =((WFActivityOutPS-WFActivityInPS)/3600);
var json= {
"unid":"aa",
"Act":WFLogActivityPS,
"Fin":WFActivityOutPS,
"Durr":Durr,
"Decision":WFLogDecisionPS,
"Interv":WFLogSubmitterPS,
"Instruction":WFLogActivityDescPS,
"Comment":WFLogCommentPS
}
/*
*
* var wfdoc = new PSWorkflowDoc (document1, this);
histopry = wfdoc.getWFLog();
var getContact = JSON.parse(histopry );
*/ }
答案 0 :(得分:1)
小心。你的代码正在流失记忆。您创建的每个Notes对象(如项目)需要在使用后调用.recycle()
进行回收。
有几种方法可以解决它。最激进的是部署OpenNTF Domino API(ODA),它提供了一个方便的document.toJson()
功能。
不那么激进:创建一个帮助bean并将代码放在那里。我会用文档和一个字段名称数组作为参数来调用方法。这将允许您循环它。
使用com.ibm.commons.util.io.json中的Json帮助程序方法,它们将确保所有转义都正确完成。您需要确定是否确实需要混合数组和对象 - 特别是如果相同的字段可以是不同文档中的一个或另一个。如果你想要平展使用item.getText();
,请使用item.getValues()
Jesse在JSON in XPages上解释更多内容。去看看吧。希望有所帮助。
答案 1 :(得分:0)
如果输入字段包含要转换为数组的多个值,请使用split
方法:
var WFLogActivityPS = this.doc.getItem("WF.LogActivityPS").split(",")
// input : A,B,C --> result :["A","B","C"]