如何将我在javascript服务器端的数据转换为json对象和数组?

时间:2017-05-04 11:47:05

标签: javascript json xpages

我正在使用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 );
 */ }

2 个答案:

答案 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"]