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 对象数组的一个元素

时间: 2024-10-10 14:50:20

WebLoad 解析服务器返回的JSON格式内容的相关文章

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

Parsing the XML Response get the root node:  var rootNode = document.wlXmls[0].XMLDocument.documentElement get the root node's name : rootNode.nodeName get the root node's first child:  var fisrtChild = rootNode.childNodes.item(0) Note: the text of a

python解析url返回的json格式数据

1.python代码# --*-- coding=utf-8 --*--import urllib2import urllibimport json weatherHtml = urllib.urlopen('http://songsearch.kugou.com/song_search_v2?keyword=周杰伦&pagesize=1')#通过urllib模块中的urlopen的方法打开urlweatherHtml1 = weatherHtml.read()#通过read方法获取返回数据pr

ajaxFileUpload上传文件成功后却无法解析服务器返回的json数据

ajaxFileUpload是一款很好用的文件上传插件,网上也有很多关于它的版本,但在上传文件成功后想返回json数据给前台时,却会出现无法解析json数据的情况. 仔细调试发现其实在向服务器提交数据后,是进入了success回调函数的,只是没有解析到json数据.那就说明服务器做出了响应的,进入了success方法的,唯一的问题就是前台接受的数据不是json格式的. 使用console.log输出data发现并不是纯粹的json数据,其中头部多了<pre style="word-wrap

C#深入解析Json格式内容

继上一篇<浅谈C#手动解析Json格式内容>我又来分析加入了一些功能让 这个解析类更实用 本章节最会开放我最终制作成功的Anonymous.Json.dll这个解析库 需要的拿走~ 功能继上一篇增加了许多上一篇只是讲述了  解析的步骤但是 至于一些扩展的功能却没有涉及 本文将继续讲解 1.如何将json转换为一个类或者结构 甚至属性 2.如何将一个类或者结构甚至属性转换为json 就这两点就已经很头疼了 诶 废话不多说进入正题 上一篇一直有个很神秘的JsonObject没有讲解 现在先来揭开J

在C#中通过使用Newtonsoft.Json库来解析百度地图地理编码(GeoCoder)服务接口返回的Json格式的数据

百度地图地理编码(GeoCoder)服务接口返回的Json格式的数据,如下所示: http://api.map.baidu.com/geocoding/v3/?address=**省**市**区**路**号院**社区&output=json&ak=您的AK密钥 返回结果实例: { "status":0, "result": { "location":{"lng":116.79, "lat":

[转]android中解析后台返回的json字符串

普通形式的:服务器端返回的json数据格式如下: {"userbean":{"Uid":"100196","Showname":"\u75af\u72c2\u7684\u7334\u5b50","Avtar":null,"State":1}} 分析代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

如何用java语法解析接口返回的json串?

起因:做接口测试的时候经常需要对接口返回的响应数据(一般都是json字符串格式)做解析 下面是一个接口响应数据的例子: 下面是对上面接口返回的json格式字符串的解析 Object dataObj=JSONPath.read(content,"$.data"); JSONObject dataJsonObj=JSON.parseObject(dataObj.toString()); //获取key="searchResult"的值,是一个JSON数组 JSONArr

在AFN中使用NSXMLParser解析服务器返回的XML数据

服务器返回的XML格式: 因为苹果没有提供直接获取xml开始标签和结束标签中间的字符串,虽然提供了 - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string这个方法获取中间的字符串,但是这个字符串包含了空格和回车,所以要在这个方法中进行过滤. 源代码如下: 8 9 #import "RecommendController.h" 11 #import "SPHTTPRequestTool.h&

[Swift通天遁地]四、网络和线程-(11)将服务器返回的JSON映射为实例对象

本文将演示使用第三方类库中,将服务器返回的JSON映射为实例对象. 首先确保在项目中已经安装了所需的第三方库. 点击[Podfile],查看安装配置文件. 1 platform :ios, ’12.0’ 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod 'Alamofire', '~> 4.0' 7 pod 'AlamofireObjectMapper