iT邦幫忙

DAY 3
6

鐵之 Just Do Lotus Notes系列 第 3

returnJSONValue幽靈程式碼 (returnJSONValue Ghost Code)

Domino View JSONObject 有6種屬性類別,需用此returnJSONValue函式判斷種類並回傳值
在很多網路範例中都可以看到相關的程式碼「returnJSONValue」關鍵字,不過找到的不是只有呼叫函式不然就是有問題沒辦法直接執行的程式碼,這個靈異事件困擾了我很久,大家都指向同一個關鍵字程式但是卻看不到實際的程式碼在哪,後來才知道這蛛絲馬跡.
在推敲許久後才恍然大悟,在Dojo前期IBM有製作了一些Lotus資料夾分類的一些JavaScript Library藏在各研討會範例及伺服器中,一般開發者當然不知道有這些JavaScript Library可以使用然而後來又出了XPages的新技術後JavaScript Library被重新改寫,因XPages技術大行其道這些好用的JavaScript Library就漸漸遺忘了(或應用在特殊的套件程式).以前也沒看過有類似提到returnJSONValue如何去應用的相關完整教學文件後來找到之後才知道很多功能都很完整了而不用我們自己去開發,但幾乎很多人都不知道如何去用及應用.真是有點可惜,在接下來的應用部分都會常用的這函式.

/**
* @fileoverview Domino View JSONObject 有6種屬性類別,需用此returnJSONValue函式判斷種類並回傳值。<br>
* Copyright © 2011, KaKaShi, Inc.<br>All rights reserved.<br>
* @author 版權屬於原作者<br>
* @author <a href="mailto:huchungling@gmail.com">卡卡西</a><br>
* Blog: <a href="http://notesfun.blogspot.com">http://notesfun.blogspot.com</a>
* @version 1.0.0
*/

/** 
*與原生 Domino View JSON物件配合應用 
*@param JSONObject 傳入JSON物件
*@returns ObjectValue 回傳物件的值
*/
function returnJSONValue(obj){
    var oObj = {};
    for(var a in obj) {
        switch(a){
            case "text":
            case "number":
            case "datetime":
                oObj.type = a;
                oObj.items = [];
                if(obj[a].constructor.toString().indexOf("Array") == -1){
                    oObj.items.push(obj[a][0]);
                }else{
                    for(var i=0; i<obj[a].length; i++){
                        oObj.items.push(obj[a][i][0]);
                    }
                }
                break;
            case "textlist":
            case "numberlist":
            case "datetimelist":
                oObj = returnJSONValue(obj[a]);
                break;
            default:
                break;
        }
    }
    return oObj;
}

上一篇
LotusScript.doc Documentation Center 使用心得
下一篇
Domino Dojo 安裝路徑的改變與新舊版對照
系列文
鐵之 Just Do Lotus Notes41

1 則留言

0
peterhsu66
iT邦新手 5 級 ‧ 2012-09-26 11:51:26

謝謝分享囉。

感謝您的支持
希望您也可以一起跟大家分享囉.
有空也可以留個聯絡方式以後 多多交流.

我要留言

立即登入留言