首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在neoload中将JSON转换为XML

在neoload中将JSON转换为XML
EN

Stack Overflow用户
提问于 2014-10-29 15:45:24
回答 1查看 575关注 0票数 0

给定以下HTTP响应:

代码语言:javascript
复制
{"id":"1", "name":test"}

目前,当您在"Edition > Preferences > Project设置> Modules Manager > JSON“中选中”将JSON请求/响应视为xml内容“(为了能够使用xpath而不是regexp)时,您有一个完全无用的东西,如:

代码语言:javascript
复制
<ObjectNode>
  <__children>
    <entry>
      <string>id</string>
      <__value>1</__value>
    </entry>
      etc...

注意:这是无用的,因为当您有深入的JSON响应时,您有类似于: ArrayNode/__children/child::ObjectNode/__children/entrychild::string/text()='data'/ObjectNode/__children/entrychild::string/text()='id'/IntNode/__value的XPath

我已经成功地创建了一个扩展,在其中解析JSONObject或JSONArray中的JSON,然后调用

代码语言:javascript
复制
return "<root>"+XML.toString(json)+"</root>";

这给了我一个美丽的

代码语言:javascript
复制
<root><id>1</id><name>test</name></root>

注意:我可以轻松地使用xpath进行处理。

问题是,然后Neoload把这个转换成

代码语言:javascript
复制
<String>&lt;root&gt;&lt;id&gt;etc... 

这和第一个东西一样没用(也许更没用,因为XPath不再是一个选项了,因为我只有一个节点)。

所以我的问题是,我怎样才能改变Neoload转换我的解码器返回值的方式?

我尝试在解码器中直接返回JSONObject或JSONArray,然后使用命名器,但名称似乎只用于请求,而不是响应。

任何提示都是感激的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-30 10:34:28

我发现模拟真实JSON的“更容易”的方法是执行以下操作。

首先,执行正常的网页调用,并通过高级面板添加一个变量来捕获所有响应( regexp to use is (.*))。

然后,使用具有以下内容的javascript (在这里,EntryResponse是捕获的变量名)

代码语言:javascript
复制
//get the previous http response and eval it
var resp_ = context.variableManager.getValue("EntryResponse");
if (resp_ == null) {
        context.fail("Variable 'EntryResponse' not found");
}
logger.debug("EntryResponse="+resp_);
var resp = eval("("+resp_+")")

//then used resp as real json
logger.debug("Logged User Id="+resp.data.id);

// Inject a value in a runtime variable
context.variableManager.setValue("UserName", resp.data.id);

这并不像可能的那样简单,但这比经典的XPath要强大得多,也容易得多。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26634768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档