• WebLoad 解析服务器返回的JSON格式内容


    服务器返回Json格式的响应内容经常是以 String (txt) 形式返回给客户端。客户端需要把 文本形式的内容还原为Json格式以进一步做处理(如,取得返回内容的一个值作为下个请求的一个输入)。这就要用到 一个函数 evel()。 具体做法如下:
     
    Parsing the JSON Response
    1. In the InitAgenda() function in the Agenda, define the global variable values of the SaveSource property as follows: 
    function InitAgenda() 

        wlGlobals.SaveSource = true 

    This instructs WebLOAD to store the complete HTML source code downloaded in the document.wlSource object.
     
    2. Drag the JavaScript object Building Block from the Toolbox to the Agenda Tree. In  the Building Block, add a function that receives the document.wlSource object and manipulates it to retrieve the statistics. The script is as follows: 
    function evalResponse ( source) {
        json_response = eval("(" + source + ")")
    }
     
    3. Call the evalResponse function to parse the response contents:
    evalResponse(document.wlSource);
     
    ---------------------------------------具体做法是:-------------------------------
     
    1. 把解析JSON 的函数 提取出来 放在一个单独的parseJSON.js文件里,以便重复利用:
    function parseJSON(source){
        jsonResponse = eval("(" + source + ")");
        return jsonResponse;
    }
     
    2. 在脚本里引进 parseJSON.js 文件:
    function InitAgenda()
    {
        wlGlobals.SaveSource = true; 
        IncludeFile("FunctionLib\parseJSON.js");  //IncludeFile 引进的文件是相对脚本wlp文件的位置;即这里的
                                                                      Function文件夹和wlp文件是放在同一个根目录下的
    }
     
    3. 直接引用parseJSON 文件里的函数:
     
    var loginResponse = document.wlSource;
    var loginObj = parseJSON(loginResponse);
    var advisorId = loginObj.AdvisorId;
     
    当然也可以不需要引进外部文件,而是直接把 eval()函数放在脚本里
     
    注:JSON 节点的读取,如果是{}结构则 直接 a.b, 如果是[], 则 c[index].d 
     
    如下面是一个返回的总结构:
    {
        "ReturnVsBenchmark": {}, 
        "RiskReward": {}, 
        "Portfolios": {}, 
        "Information": {}
    }
    

    展开上面Portfolios 的层次结构如下:

    "Portfolios": {
            "Id": "Portfolios", 
            "Label": "Portfolios", 
            "Columns": [], 
            "Sections": [
                {}, 
                {}, 
                {
                    "Rows": [
                        {
                            "Id": "95646f0f-879d-448b-8bf3-c9bcb15bedd0", 
                            "Status": "Actual", 
                            "OneYear": 0.13786034, 
                            "ThreeYear": 0.14883958, 
                            "FiveYear": 0.13716583, 
                            "TenYear": 0.11452207, 
                            "TrailingAsOfDate": "2014-10-31", 
                            "MarketValue": 124809.13719108, 
                            "MarketValueCurrencyCode": "USD", 
                            "ThreeYearStdDev": 10.08655991, 
                            "ThreeYearMean": 0.14883958, 
                            "RiskRewardAsOfDate": "2014-10-31", 
                            "AccountName": "Portfolio 1", 
                            "YTD": 0.09898687, 
                            "ReturnDate": "2014-10-31"
                        }, 
                        {}, 
                        {}
                    ]
                }, 
                {}, 
                {}
            ]
        }, 

    要取得 "Id"的值"95646f0f-879d-448b-8bf3-c9bcb15bedd0"  ,则读取的脚本如下:

    var clientResponse = document.wlSource;  // 把 返回的内容存放一个变量中
    var clientObj = eval( "(" + clientResponse + ")" );  // 把返回的txt 格式的内容转化为JSON 格式
    var portfolioId1 = clientObj.Portfolios.Sections[2].Rows[0].Id; //Sections[2]取得是Rows 这个对象,在Sections[]里, 每个{}对象都是Sections 对象数组的一个元素
  • 相关阅读:
    Exercice_3.8
    Exercice_3.13.1_练习使用vector2
    Exercice_3.13_练习使用vetor
    Exercice_3.10_去掉string对象中的标点符号
    Exercice_3.7_判断两个字符串的大小和长度
    1-日期时间视图 2-长按事件
    View(视图)2
    View(视图)
    计算器(UI事件)给按钮添加监听器
    Activity(活动)
  • 原文地址:https://www.cnblogs.com/tomweng/p/4157656.html
Copyright © 2020-2023  润新知